From 71ebb236b798204ef6b41df674d04a2a03c2eb81 Mon Sep 17 00:00:00 2001 From: Wouter Born Date: Fri, 9 Oct 2026 14:49:46 +0200 Subject: [PATCH] Update documentation links for the core repository migration Update repository references from openremote/openremote to openremote/core and source links from master to main across current and versioned documentation. Update the site's GitHub links and normalize website URLs to https://openremote.io. Refs openremote/openremote#3151 --- docs/10-introduction.md | 8 ++--- docs/20-quick-start.md | 2 +- docs/architecture/10-overall-architecture.md | 10 +++---- .../20-manager-endpoints-and-file-paths.md | 10 +++---- docs/architecture/30-security.md | 4 +-- .../50-asset-location-tracking.md | 2 +- .../010-preparing-the-environment.md | 2 +- docs/developer-guide/020-setting-up-an-ide.md | 2 +- docs/developer-guide/025-code-formatting.md | 28 ++++++++--------- .../030-docker-compose-profiles.md | 2 +- docs/developer-guide/080-extensions.md | 2 +- .../100-system-administration.md | 4 +-- .../110-working-on-ui-and-apps.md | 8 ++--- .../010-deploying/10-custom-deployment.md | 10 +++---- .../010-deploying/30-aws-cloudformation.md | 2 +- .../010-deploying/40-aws-marketplace.md | 4 +-- .../user-guide/010-deploying/50-kubernetes.md | 6 ++-- .../010-deploying/80-release-management.md | 12 ++++---- .../020-manager-ui/10-manager-ui.md | 8 ++--- .../user-guide/020-manager-ui/20-on-mobile.md | 2 +- .../020-manager-ui/30-appearance.md | 2 +- .../030-assets-agents-and-attributes.md | 8 ++--- .../040-agents-protocols/010-overview.md | 30 +++++++++---------- .../020-bluetooth-mesh.md | 4 +-- .../040-agents-protocols/050-http.md | 10 +++---- .../040-agents-protocols/060-knx.md | 4 +-- .../040-agents-protocols/090-mqtt.md | 4 +-- .../040-agents-protocols/100-simulator.md | 6 ++-- .../040-agents-protocols/110-snmp.md | 4 +-- .../040-agents-protocols/130-tcp.md | 4 +-- .../040-agents-protocols/150-udp.md | 6 ++-- .../040-agents-protocols/160-velbus.md | 10 +++---- .../170-websocket-agent.md | 8 ++--- .../10-artnet-dmx-agent.md | 4 +-- .../20-ikea-tr\303\245dfri-agent.md" | 2 +- .../30-or-controller-2.5-agent.md | 2 +- docs/user-guide/050-manager-apis.md | 18 +++++------ .../40-groovy-rules.md | 16 +++++----- .../10-realms-users-and-roles.md | 2 +- .../10-edge-gateway.md | 2 +- .../50-mqtt-gateway-api.md | 28 ++++++++--------- ...10-create-your-energy-management-system.md | 2 +- docusaurus.config.ts | 14 ++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.10.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.10.0/introduction.md | 6 ++-- versioned_docs/version-1.10.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 4 +-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.10.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.11.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.11.0/introduction.md | 6 ++-- versioned_docs/version-1.11.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 4 +-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.11.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.12.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.12.0/introduction.md | 8 ++--- versioned_docs/version-1.12.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 4 +-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.12.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.13.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.13.0/introduction.md | 8 ++--- versioned_docs/version-1.13.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.13.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.14.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.14.0/introduction.md | 8 ++--- versioned_docs/version-1.14.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.14.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.15.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.15.0/introduction.md | 8 ++--- versioned_docs/version-1.15.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.15.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.16.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.16.0/introduction.md | 8 ++--- versioned_docs/version-1.16.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.16.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.17.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.17.0/introduction.md | 8 ++--- versioned_docs/version-1.17.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.17.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.18.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.18.0/introduction.md | 8 ++--- versioned_docs/version-1.18.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.18.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.19.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.19.0/introduction.md | 8 ++--- versioned_docs/version-1.19.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.19.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.2.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.2.0/introduction.md | 6 ++-- versioned_docs/version-1.2.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 2 +- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 2 +- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 2 +- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.2.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.20.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.20.0/introduction.md | 8 ++--- versioned_docs/version-1.20.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.20.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.21.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.21.0/introduction.md | 8 ++--- versioned_docs/version-1.21.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.21.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.22.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.22.0/introduction.md | 8 ++--- versioned_docs/version-1.22.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.22.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.23.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.23.0/introduction.md | 8 ++--- versioned_docs/version-1.23.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.23.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.24.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.24.0/introduction.md | 8 ++--- versioned_docs/version-1.24.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.24.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.25.0/architecture/security.md | 4 +-- .../docker-compose-profiles.md | 2 +- .../developer-guide/extensions.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/system-administration.md | 4 +-- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.25.0/introduction.md | 8 ++--- versioned_docs/version-1.25.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.25.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/overall-architecture.md | 10 +++---- .../version-1.26.0/architecture/security.md | 4 +-- .../docker-compose-profiles.md | 2 +- .../developer-guide/extensions.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/system-administration.md | 4 +-- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.26.0/introduction.md | 8 ++--- versioned_docs/version-1.26.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 6 ++-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/edge-gateway.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.26.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/appearance.md | 2 +- .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../version-1.27.0/10-introduction.md | 8 ++--- .../version-1.27.0/20-quick-start.md | 2 +- .../architecture/10-overall-architecture.md | 10 +++---- .../20-manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/30-security.md | 4 +-- .../50-asset-location-tracking.md | 2 +- .../010-preparing-the-environment.md | 2 +- .../developer-guide/020-setting-up-an-ide.md | 2 +- .../030-docker-compose-profiles.md | 2 +- .../developer-guide/080-extensions.md | 2 +- .../100-system-administration.md | 4 +-- .../110-working-on-ui-and-apps.md | 8 ++--- .../010-deploying/10-custom-deployment.md | 10 +++---- .../010-deploying/30-aws-cloudformation.md | 2 +- .../010-deploying/40-aws-marketplace.md | 4 +-- .../user-guide/010-deploying/50-kubernetes.md | 6 ++-- .../010-deploying/80-release-management.md | 12 ++++---- .../020-manager-ui/10-manager-ui.md | 8 ++--- .../user-guide/020-manager-ui/20-on-mobile.md | 2 +- .../020-manager-ui/30-appearance.md | 2 +- .../030-assets-agents-and-attributes.md | 8 ++--- .../040-agents-protocols/010-overview.md | 30 +++++++++---------- .../020-bluetooth-mesh.md | 4 +-- .../040-agents-protocols/050-http.md | 10 +++---- .../040-agents-protocols/060-knx.md | 4 +-- .../040-agents-protocols/090-mqtt.md | 4 +-- .../040-agents-protocols/100-simulator.md | 6 ++-- .../040-agents-protocols/110-snmp.md | 4 +-- .../040-agents-protocols/130-tcp.md | 4 +-- .../040-agents-protocols/150-udp.md | 6 ++-- .../040-agents-protocols/160-velbus.md | 10 +++---- .../170-websocket-agent.md | 8 ++--- .../10-artnet-dmx-agent.md | 4 +-- .../20-ikea-tr\303\245dfri-agent.md" | 2 +- .../30-or-controller-2.5-agent.md | 2 +- .../user-guide/050-manager-apis.md | 18 +++++------ .../40-groovy-rules.md | 16 +++++----- .../10-realms-users-and-roles.md | 2 +- .../10-edge-gateway.md | 2 +- .../50-mqtt-gateway-api.md | 28 ++++++++--------- ...10-create-your-energy-management-system.md | 2 +- .../version-1.28.0/10-introduction.md | 8 ++--- .../version-1.28.0/20-quick-start.md | 2 +- .../architecture/10-overall-architecture.md | 10 +++---- .../20-manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/30-security.md | 4 +-- .../50-asset-location-tracking.md | 2 +- .../010-preparing-the-environment.md | 2 +- .../developer-guide/020-setting-up-an-ide.md | 2 +- .../developer-guide/025-code-formatting.md | 18 +++++------ .../030-docker-compose-profiles.md | 2 +- .../developer-guide/080-extensions.md | 2 +- .../100-system-administration.md | 4 +-- .../110-working-on-ui-and-apps.md | 8 ++--- .../010-deploying/10-custom-deployment.md | 10 +++---- .../010-deploying/30-aws-cloudformation.md | 2 +- .../010-deploying/40-aws-marketplace.md | 4 +-- .../user-guide/010-deploying/50-kubernetes.md | 6 ++-- .../010-deploying/80-release-management.md | 12 ++++---- .../020-manager-ui/10-manager-ui.md | 8 ++--- .../user-guide/020-manager-ui/20-on-mobile.md | 2 +- .../020-manager-ui/30-appearance.md | 2 +- .../030-assets-agents-and-attributes.md | 8 ++--- .../040-agents-protocols/010-overview.md | 30 +++++++++---------- .../020-bluetooth-mesh.md | 4 +-- .../040-agents-protocols/050-http.md | 10 +++---- .../040-agents-protocols/060-knx.md | 4 +-- .../040-agents-protocols/090-mqtt.md | 4 +-- .../040-agents-protocols/100-simulator.md | 6 ++-- .../040-agents-protocols/110-snmp.md | 4 +-- .../040-agents-protocols/130-tcp.md | 4 +-- .../040-agents-protocols/150-udp.md | 6 ++-- .../040-agents-protocols/160-velbus.md | 10 +++---- .../170-websocket-agent.md | 8 ++--- .../10-artnet-dmx-agent.md | 4 +-- .../20-ikea-tr\303\245dfri-agent.md" | 2 +- .../30-or-controller-2.5-agent.md | 2 +- .../user-guide/050-manager-apis.md | 18 +++++------ .../40-groovy-rules.md | 16 +++++----- .../10-realms-users-and-roles.md | 2 +- .../10-edge-gateway.md | 2 +- .../50-mqtt-gateway-api.md | 28 ++++++++--------- ...10-create-your-energy-management-system.md | 2 +- .../version-1.29.0/10-introduction.md | 8 ++--- .../version-1.29.0/20-quick-start.md | 2 +- .../architecture/10-overall-architecture.md | 10 +++---- .../20-manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/30-security.md | 4 +-- .../50-asset-location-tracking.md | 2 +- .../010-preparing-the-environment.md | 2 +- .../developer-guide/020-setting-up-an-ide.md | 2 +- .../developer-guide/025-code-formatting.md | 18 +++++------ .../030-docker-compose-profiles.md | 2 +- .../developer-guide/080-extensions.md | 2 +- .../100-system-administration.md | 4 +-- .../110-working-on-ui-and-apps.md | 8 ++--- .../010-deploying/10-custom-deployment.md | 10 +++---- .../010-deploying/30-aws-cloudformation.md | 2 +- .../010-deploying/40-aws-marketplace.md | 4 +-- .../user-guide/010-deploying/50-kubernetes.md | 6 ++-- .../010-deploying/80-release-management.md | 12 ++++---- .../020-manager-ui/10-manager-ui.md | 8 ++--- .../user-guide/020-manager-ui/20-on-mobile.md | 2 +- .../020-manager-ui/30-appearance.md | 2 +- .../030-assets-agents-and-attributes.md | 8 ++--- .../040-agents-protocols/010-overview.md | 30 +++++++++---------- .../020-bluetooth-mesh.md | 4 +-- .../040-agents-protocols/050-http.md | 10 +++---- .../040-agents-protocols/060-knx.md | 4 +-- .../040-agents-protocols/090-mqtt.md | 4 +-- .../040-agents-protocols/100-simulator.md | 6 ++-- .../040-agents-protocols/110-snmp.md | 4 +-- .../040-agents-protocols/130-tcp.md | 4 +-- .../040-agents-protocols/150-udp.md | 6 ++-- .../040-agents-protocols/160-velbus.md | 10 +++---- .../170-websocket-agent.md | 8 ++--- .../10-artnet-dmx-agent.md | 4 +-- .../20-ikea-tr\303\245dfri-agent.md" | 2 +- .../30-or-controller-2.5-agent.md | 2 +- .../user-guide/050-manager-apis.md | 18 +++++------ .../40-groovy-rules.md | 16 +++++----- .../10-realms-users-and-roles.md | 2 +- .../10-edge-gateway.md | 2 +- .../50-mqtt-gateway-api.md | 28 ++++++++--------- ...10-create-your-energy-management-system.md | 2 +- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.3.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.3.0/introduction.md | 6 ++-- versioned_docs/version-1.3.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 2 +- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 2 +- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.3.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../version-1.30.0/10-introduction.md | 8 ++--- .../version-1.30.0/20-quick-start.md | 2 +- .../architecture/10-overall-architecture.md | 10 +++---- .../20-manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/30-security.md | 4 +-- .../50-asset-location-tracking.md | 2 +- .../010-preparing-the-environment.md | 2 +- .../developer-guide/020-setting-up-an-ide.md | 2 +- .../developer-guide/025-code-formatting.md | 18 +++++------ .../030-docker-compose-profiles.md | 2 +- .../developer-guide/080-extensions.md | 2 +- .../100-system-administration.md | 4 +-- .../110-working-on-ui-and-apps.md | 8 ++--- .../010-deploying/10-custom-deployment.md | 10 +++---- .../010-deploying/30-aws-cloudformation.md | 2 +- .../010-deploying/40-aws-marketplace.md | 4 +-- .../user-guide/010-deploying/50-kubernetes.md | 6 ++-- .../010-deploying/80-release-management.md | 12 ++++---- .../020-manager-ui/10-manager-ui.md | 8 ++--- .../user-guide/020-manager-ui/20-on-mobile.md | 2 +- .../020-manager-ui/30-appearance.md | 2 +- .../030-assets-agents-and-attributes.md | 8 ++--- .../040-agents-protocols/010-overview.md | 30 +++++++++---------- .../020-bluetooth-mesh.md | 4 +-- .../040-agents-protocols/050-http.md | 10 +++---- .../040-agents-protocols/060-knx.md | 4 +-- .../040-agents-protocols/090-mqtt.md | 4 +-- .../040-agents-protocols/100-simulator.md | 6 ++-- .../040-agents-protocols/110-snmp.md | 4 +-- .../040-agents-protocols/130-tcp.md | 4 +-- .../040-agents-protocols/150-udp.md | 6 ++-- .../040-agents-protocols/160-velbus.md | 10 +++---- .../170-websocket-agent.md | 8 ++--- .../10-artnet-dmx-agent.md | 4 +-- .../20-ikea-tr\303\245dfri-agent.md" | 2 +- .../30-or-controller-2.5-agent.md | 2 +- .../user-guide/050-manager-apis.md | 18 +++++------ .../40-groovy-rules.md | 16 +++++----- .../10-realms-users-and-roles.md | 2 +- .../10-edge-gateway.md | 2 +- .../50-mqtt-gateway-api.md | 28 ++++++++--------- ...10-create-your-energy-management-system.md | 2 +- .../version-1.31.0/10-introduction.md | 8 ++--- .../version-1.31.0/20-quick-start.md | 2 +- .../architecture/10-overall-architecture.md | 10 +++---- .../20-manager-endpoints-and-file-paths.md | 10 +++---- .../architecture/30-security.md | 4 +-- .../50-asset-location-tracking.md | 2 +- .../010-preparing-the-environment.md | 2 +- .../developer-guide/020-setting-up-an-ide.md | 2 +- .../developer-guide/025-code-formatting.md | 28 ++++++++--------- .../030-docker-compose-profiles.md | 2 +- .../developer-guide/080-extensions.md | 2 +- .../100-system-administration.md | 4 +-- .../110-working-on-ui-and-apps.md | 8 ++--- .../010-deploying/10-custom-deployment.md | 10 +++---- .../010-deploying/30-aws-cloudformation.md | 2 +- .../010-deploying/40-aws-marketplace.md | 4 +-- .../user-guide/010-deploying/50-kubernetes.md | 6 ++-- .../010-deploying/80-release-management.md | 12 ++++---- .../020-manager-ui/10-manager-ui.md | 8 ++--- .../user-guide/020-manager-ui/20-on-mobile.md | 2 +- .../020-manager-ui/30-appearance.md | 2 +- .../030-assets-agents-and-attributes.md | 8 ++--- .../040-agents-protocols/010-overview.md | 30 +++++++++---------- .../020-bluetooth-mesh.md | 4 +-- .../040-agents-protocols/050-http.md | 10 +++---- .../040-agents-protocols/060-knx.md | 4 +-- .../040-agents-protocols/090-mqtt.md | 4 +-- .../040-agents-protocols/100-simulator.md | 6 ++-- .../040-agents-protocols/110-snmp.md | 4 +-- .../040-agents-protocols/130-tcp.md | 4 +-- .../040-agents-protocols/150-udp.md | 6 ++-- .../040-agents-protocols/160-velbus.md | 10 +++---- .../170-websocket-agent.md | 8 ++--- .../10-artnet-dmx-agent.md | 4 +-- .../20-ikea-tr\303\245dfri-agent.md" | 2 +- .../30-or-controller-2.5-agent.md | 2 +- .../user-guide/050-manager-apis.md | 18 +++++------ .../40-groovy-rules.md | 16 +++++----- .../10-realms-users-and-roles.md | 2 +- .../10-edge-gateway.md | 2 +- .../50-mqtt-gateway-api.md | 28 ++++++++--------- ...10-create-your-energy-management-system.md | 2 +- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.4.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.4.0/introduction.md | 6 ++-- versioned_docs/version-1.4.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 2 +- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 2 +- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.4.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.5.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.5.0/introduction.md | 6 ++-- versioned_docs/version-1.5.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 2 +- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 2 +- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.5.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.6.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.6.0/introduction.md | 6 ++-- versioned_docs/version-1.6.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 2 +- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 2 +- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.6.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.7.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.7.0/introduction.md | 6 ++-- versioned_docs/version-1.7.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 2 +- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 2 +- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.7.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.8.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.8.0/introduction.md | 6 ++-- versioned_docs/version-1.8.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 2 +- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.8.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- .../architecture/asset-location-tracking.md | 2 +- .../manager-endpoints-and-file-paths.md | 10 +++---- .../version-1.9.0/architecture/security.md | 4 +-- .../developer-guide/data-migration.md | 2 +- .../docker-compose-profiles.md | 2 +- .../installing-and-using-docker.md | 2 +- .../preparing-the-environment.md | 2 +- .../developer-guide/setting-up-an-ide.md | 2 +- .../developer-guide/working-on-ui-and-apps.md | 8 ++--- versioned_docs/version-1.9.0/introduction.md | 6 ++-- versioned_docs/version-1.9.0/quick-start.md | 2 +- .../agents-protocols/bluetooth-mesh.md | 4 +-- .../disabled-protocols/artnet-dmx-agent.md | 4 +-- .../ikea-tr\303\245dfri-agent.md" | 2 +- .../or-controller-2.5-agent.md | 2 +- .../user-guide/agents-protocols/http.md | 10 +++---- .../user-guide/agents-protocols/knx.md | 4 +-- .../user-guide/agents-protocols/mqtt.md | 4 +-- .../user-guide/agents-protocols/overview.md | 30 +++++++++---------- .../user-guide/agents-protocols/simulator.md | 4 +-- .../user-guide/agents-protocols/snmp.md | 4 +-- .../user-guide/agents-protocols/tcp.md | 4 +-- .../user-guide/agents-protocols/udp.md | 6 ++-- .../user-guide/agents-protocols/velbus.md | 10 +++---- .../agents-protocols/websocket-agent.md | 8 ++--- .../assets-agents-and-attributes.md | 8 ++--- .../deploying/aws-cloudformation.md | 2 +- .../user-guide/deploying/aws-marketplace.md | 4 +-- .../deploying/configuring-the-manager-ui.md | 2 +- .../user-guide/deploying/custom-deployment.md | 10 +++---- .../user-guide/deploying/kubernetes.md | 6 ++-- .../deploying/release-management.md | 12 ++++---- .../create-your-energy-management-system.md | 2 +- .../gateways-and-devices/mqtt-gateway-api.md | 28 ++++++++--------- .../realms-users-and-roles.md | 2 +- .../version-1.9.0/user-guide/manager-apis.md | 18 +++++------ .../user-guide/manager-ui/manager-ui.md | 8 ++--- .../user-guide/manager-ui/on-mobile.md | 2 +- .../rules-and-forecasting/groovy-rules.md | 16 +++++----- 1247 files changed, 4198 insertions(+), 4198 deletions(-) diff --git a/docs/10-introduction.md b/docs/10-introduction.md index ba4b9057..77f9e432 100644 --- a/docs/10-introduction.md +++ b/docs/10-introduction.md @@ -6,13 +6,13 @@ ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -26,7 +26,7 @@ The OpenRemote [Frontend](./developer-guide/110-working-on-ui-and-apps.md) simpl * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/docs/20-quick-start.md b/docs/20-quick-start.md index 287c2146..8b913ce0 100644 --- a/docs/20-quick-start.md +++ b/docs/20-quick-start.md @@ -13,7 +13,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/docs/architecture/10-overall-architecture.md b/docs/architecture/10-overall-architecture.md index 1ba90ac2..e617e16f 100644 --- a/docs/architecture/10-overall-architecture.md +++ b/docs/architecture/10-overall-architecture.md @@ -1,7 +1,7 @@ # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -47,7 +47,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -58,7 +58,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -66,14 +66,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/docs/architecture/20-manager-endpoints-and-file-paths.md b/docs/architecture/20-manager-endpoints-and-file-paths.md index fe6050bf..9b777ac8 100644 --- a/docs/architecture/20-manager-endpoints-and-file-paths.md +++ b/docs/architecture/20-manager-endpoints-and-file-paths.md @@ -30,11 +30,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/docs/architecture/30-security.md b/docs/architecture/30-security.md index 6e4d6f6a..4a955b1a 100644 --- a/docs/architecture/30-security.md +++ b/docs/architecture/30-security.md @@ -1,7 +1,7 @@ # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/docs/architecture/50-asset-location-tracking.md b/docs/architecture/50-asset-location-tracking.md index c00e4a15..48d1c0cb 100644 --- a/docs/architecture/50-asset-location-tracking.md +++ b/docs/architecture/50-asset-location-tracking.md @@ -60,7 +60,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/docs/developer-guide/010-preparing-the-environment.md b/docs/developer-guide/010-preparing-the-environment.md index 44e678b5..35f00695 100644 --- a/docs/developer-guide/010-preparing-the-environment.md +++ b/docs/developer-guide/010-preparing-the-environment.md @@ -38,5 +38,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/docs/developer-guide/020-setting-up-an-ide.md b/docs/developer-guide/020-setting-up-an-ide.md index 1c3b777f..a141dd02 100644 --- a/docs/developer-guide/020-setting-up-an-ide.md +++ b/docs/developer-guide/020-setting-up-an-ide.md @@ -41,7 +41,7 @@ For formatter plugins and IDE settings, see [Code formatting with Spotless](./02 ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/docs/developer-guide/025-code-formatting.md b/docs/developer-guide/025-code-formatting.md index cbf5d625..6c139ed3 100644 --- a/docs/developer-guide/025-code-formatting.md +++ b/docs/developer-guide/025-code-formatting.md @@ -57,7 +57,7 @@ Review the resulting changes before committing them. Depending on the file type, ## Backend and UI tasks -Repositories that separate backend and UI sources, such as `openremote/openremote` and OpenRemote custom projects, provide additional task groups. +Repositories that separate backend and UI sources, such as `openremote/core` and OpenRemote custom projects, provide additional task groups. To check only backend or UI sources, run: @@ -148,7 +148,7 @@ The hook provides a useful local safeguard, but it does not replace the formatti ## UI linting and formatting with Yarn -Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/openremote` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). +Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/core` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). Run these commands from the repository root. @@ -525,16 +525,16 @@ Only add commits that are overwhelmingly mechanical, such as repository-wide for Pull requests created before the repository-wide formatting commits can produce many merge conflicts, even when their functional changes do not overlap. -For `openremote/openremote`, the relevant commits are: +For `openremote/core`, the relevant commits are: | Commit | Description | |----------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| -| [`d6941d97c96ad70e7a6b764a4a4a7682aa906c8a`](https://github.com/openremote/openremote/commit/d6941d97c96ad70e7a6b764a4a4a7682aa906c8a) | Last commit before the repository-wide formatting change | -| [`e3a066dcf739efe08d3d0e51e477d2d652dd28f8`](https://github.com/openremote/openremote/commit/e3a066dcf739efe08d3d0e51e477d2d652dd28f8) | Apply Spotless across the repository | -| [`5312a1199b0e1cc6daaa46c9b20f2d71a6755246`](https://github.com/openremote/openremote/commit/5312a1199b0e1cc6daaa46c9b20f2d71a6755246) | Enable Spotless formatting for Groovy files | -| [`db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2`](https://github.com/openremote/openremote/commit/db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2) | Apply repository-wide Spotless formatting to Groovy files | +| [`d6941d97c96ad70e7a6b764a4a4a7682aa906c8a`](https://github.com/openremote/core/commit/d6941d97c96ad70e7a6b764a4a4a7682aa906c8a) | Last commit before the repository-wide formatting change | +| [`e3a066dcf739efe08d3d0e51e477d2d652dd28f8`](https://github.com/openremote/core/commit/e3a066dcf739efe08d3d0e51e477d2d652dd28f8) | Apply Spotless across the repository | +| [`5312a1199b0e1cc6daaa46c9b20f2d71a6755246`](https://github.com/openremote/core/commit/5312a1199b0e1cc6daaa46c9b20f2d71a6755246) | Enable Spotless formatting for Groovy files | +| [`db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2`](https://github.com/openremote/core/commit/db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2) | Apply repository-wide Spotless formatting to Groovy files | -The `master` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. +The `main` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. 1. Fetch the latest repository history: @@ -595,7 +595,7 @@ The `master` branch can be merged into the pull request in stages so that functi git commit ``` -8. Merge the latest `master` branch as usual: +8. Merge the latest `main` branch as usual: ```shell git merge origin/master @@ -615,10 +615,10 @@ Do not use the `-s ours` merge strategy either. It would record a formatting com ### Upgrading an existing custom project to Spotless -Custom projects commonly use the reusable CI/CD workflow from the `master` branch of `openremote/openremote`: +Custom projects commonly use the reusable CI/CD workflow from the `main` branch of `openremote/core`: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Because this follows `master`, new workflow behaviour is inherited automatically. This includes the Spotless formatting checks. @@ -628,12 +628,12 @@ Because this follows `master`, new workflow behaviour is inherited automatically When there is not yet time to upgrade a custom project, temporarily pin the reusable workflow to a commit from before the Spotless checks were added: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 +uses: openremote/core/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 ``` Pinning the workflow also prevents the project from receiving other workflow changes made after that commit. Use this only as a temporary measure. -The pinned SHA is the [`51f4c3c0c8edd429a65237268d47d615617d4008`](https://github.com/openremote/openremote/commit/51f4c3c0c8edd429a65237268d47d615617d4008) commit in `openremote/openremote`. +The pinned SHA is the [`51f4c3c0c8edd429a65237268d47d615617d4008`](https://github.com/openremote/core/commit/51f4c3c0c8edd429a65237268d47d615617d4008) commit in `openremote/core`. #### Pull request 1: Add Spotless and apply formatting @@ -681,7 +681,7 @@ When other custom-project template updates are also required, compare the existi Ensure the reusable workflow reference points to `master` before creating the first commit: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Commit the synchronized configuration and workflow change: diff --git a/docs/developer-guide/030-docker-compose-profiles.md b/docs/developer-guide/030-docker-compose-profiles.md index 2dd51e10..438b7965 100644 --- a/docs/developer-guide/030-docker-compose-profiles.md +++ b/docs/developer-guide/030-docker-compose-profiles.md @@ -10,7 +10,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/docs/developer-guide/080-extensions.md b/docs/developer-guide/080-extensions.md index 2f0bfd79..e583d41d 100644 --- a/docs/developer-guide/080-extensions.md +++ b/docs/developer-guide/080-extensions.md @@ -38,4 +38,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/docs/developer-guide/100-system-administration.md b/docs/developer-guide/100-system-administration.md index c3174653..4532f89f 100644 --- a/docs/developer-guide/100-system-administration.md +++ b/docs/developer-guide/100-system-administration.md @@ -322,7 +322,7 @@ When executing the automation, AWS will perform several actions under the hood. - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -456,7 +456,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/docs/developer-guide/110-working-on-ui-and-apps.md b/docs/developer-guide/110-working-on-ui-and-apps.md index 5e3ed330..42b93a70 100644 --- a/docs/developer-guide/110-working-on-ui-and-apps.md +++ b/docs/developer-guide/110-working-on-ui-and-apps.md @@ -1,7 +1,7 @@ # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -46,9 +46,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/docs/user-guide/010-deploying/10-custom-deployment.md b/docs/user-guide/010-deploying/10-custom-deployment.md index efda80ee..9f8887c0 100644 --- a/docs/user-guide/010-deploying/10-custom-deployment.md +++ b/docs/user-guide/010-deploying/10-custom-deployment.md @@ -38,19 +38,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/050-agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/130-working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -58,7 +58,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/docs/user-guide/010-deploying/30-aws-cloudformation.md b/docs/user-guide/010-deploying/30-aws-cloudformation.md index ca31739d..4c1e3ab3 100644 --- a/docs/user-guide/010-deploying/30-aws-cloudformation.md +++ b/docs/user-guide/010-deploying/30-aws-cloudformation.md @@ -1,6 +1,6 @@ # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/docs/user-guide/010-deploying/40-aws-marketplace.md b/docs/user-guide/010-deploying/40-aws-marketplace.md index 8be63c5a..fb9e9136 100644 --- a/docs/user-guide/010-deploying/40-aws-marketplace.md +++ b/docs/user-guide/010-deploying/40-aws-marketplace.md @@ -1,7 +1,7 @@ # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -104,7 +104,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/docs/user-guide/010-deploying/50-kubernetes.md b/docs/user-guide/010-deploying/50-kubernetes.md index de0fa48d..3c9d8c9e 100644 --- a/docs/user-guide/010-deploying/50-kubernetes.md +++ b/docs/user-guide/010-deploying/50-kubernetes.md @@ -3,9 +3,9 @@ In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/docs/user-guide/010-deploying/80-release-management.md b/docs/user-guide/010-deploying/80-release-management.md index 1dcc8acc..59af5fc6 100644 --- a/docs/user-guide/010-deploying/80-release-management.md +++ b/docs/user-guide/010-deploying/80-release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.26.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremote` version in `gradle/libs.versions.toml` so this may not be needed] 2. Java code: Update the `openremote` version in the `gradle/libs.versions.toml` file @@ -116,6 +116,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/docs/user-guide/020-manager-ui/10-manager-ui.md b/docs/user-guide/020-manager-ui/10-manager-ui.md index c174c4ac..6d2b02ba 100644 --- a/docs/user-guide/020-manager-ui/10-manager-ui.md +++ b/docs/user-guide/020-manager-ui/10-manager-ui.md @@ -4,7 +4,7 @@ slug: /user-guide/manager-ui/ # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../060-rules-and-forecasting/50-forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/docs/user-guide/020-manager-ui/20-on-mobile.md b/docs/user-guide/020-manager-ui/20-on-mobile.md index 23f6ab04..8d361c77 100644 --- a/docs/user-guide/020-manager-ui/20-on-mobile.md +++ b/docs/user-guide/020-manager-ui/20-on-mobile.md @@ -10,7 +10,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/docs/user-guide/020-manager-ui/30-appearance.md b/docs/user-guide/020-manager-ui/30-appearance.md index abbe0443..290af1ef 100644 --- a/docs/user-guide/020-manager-ui/30-appearance.md +++ b/docs/user-guide/020-manager-ui/30-appearance.md @@ -356,7 +356,7 @@ Exclude asset types from the 'Add asset' dialog. ``` #### Viewer Configuration -Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/docs/user-guide/030-assets-agents-and-attributes.md b/docs/user-guide/030-assets-agents-and-attributes.md index 35148f05..a6938678 100644 --- a/docs/user-guide/030-assets-agents-and-attributes.md +++ b/docs/user-guide/030-assets-agents-and-attributes.md @@ -33,7 +33,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -62,7 +62,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -74,7 +74,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -87,4 +87,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/docs/user-guide/040-agents-protocols/010-overview.md b/docs/user-guide/040-agents-protocols/010-overview.md index 38acc3b8..fe13fda0 100644 --- a/docs/user-guide/040-agents-protocols/010-overview.md +++ b/docs/user-guide/040-agents-protocols/010-overview.md @@ -1,17 +1,17 @@ # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -30,18 +30,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -51,9 +51,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -76,7 +76,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -85,14 +85,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/docs/user-guide/040-agents-protocols/020-bluetooth-mesh.md b/docs/user-guide/040-agents-protocols/020-bluetooth-mesh.md index 526f3091..be036513 100644 --- a/docs/user-guide/040-agents-protocols/020-bluetooth-mesh.md +++ b/docs/user-guide/040-agents-protocols/020-bluetooth-mesh.md @@ -35,8 +35,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/docs/user-guide/040-agents-protocols/050-http.md b/docs/user-guide/040-agents-protocols/050-http.md index 511dc579..6483b051 100644 --- a/docs/user-guide/040-agents-protocols/050-http.md +++ b/docs/user-guide/040-agents-protocols/050-http.md @@ -7,10 +7,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -37,8 +37,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/docs/user-guide/040-agents-protocols/060-knx.md b/docs/user-guide/040-agents-protocols/060-knx.md index 80148fc5..2f951b57 100644 --- a/docs/user-guide/040-agents-protocols/060-knx.md +++ b/docs/user-guide/040-agents-protocols/060-knx.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/docs/user-guide/040-agents-protocols/090-mqtt.md b/docs/user-guide/040-agents-protocols/090-mqtt.md index 18aacc8d..02e507e8 100644 --- a/docs/user-guide/040-agents-protocols/090-mqtt.md +++ b/docs/user-guide/040-agents-protocols/090-mqtt.md @@ -23,7 +23,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -62,7 +62,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](./010-overview.md) - [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md) diff --git a/docs/user-guide/040-agents-protocols/100-simulator.md b/docs/user-guide/040-agents-protocols/100-simulator.md index a56aa2fd..308b043b 100644 --- a/docs/user-guide/040-agents-protocols/100-simulator.md +++ b/docs/user-guide/040-agents-protocols/100-simulator.md @@ -11,9 +11,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/docs/user-guide/040-agents-protocols/110-snmp.md b/docs/user-guide/040-agents-protocols/110-snmp.md index 997bfc23..50f651ad 100644 --- a/docs/user-guide/040-agents-protocols/110-snmp.md +++ b/docs/user-guide/040-agents-protocols/110-snmp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/docs/user-guide/040-agents-protocols/130-tcp.md b/docs/user-guide/040-agents-protocols/130-tcp.md index 404074a8..56cdf014 100644 --- a/docs/user-guide/040-agents-protocols/130-tcp.md +++ b/docs/user-guide/040-agents-protocols/130-tcp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used. diff --git a/docs/user-guide/040-agents-protocols/150-udp.md b/docs/user-guide/040-agents-protocols/150-udp.md index 210806c2..c52aeade 100644 --- a/docs/user-guide/040-agents-protocols/150-udp.md +++ b/docs/user-guide/040-agents-protocols/150-udp.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/docs/user-guide/040-agents-protocols/160-velbus.md b/docs/user-guide/040-agents-protocols/160-velbus.md index e68b35a9..d6e3b7fd 100644 --- a/docs/user-guide/040-agents-protocols/160-velbus.md +++ b/docs/user-guide/040-agents-protocols/160-velbus.md @@ -2,8 +2,8 @@ Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -12,8 +12,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -24,7 +24,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/docs/user-guide/040-agents-protocols/170-websocket-agent.md b/docs/user-guide/040-agents-protocols/170-websocket-agent.md index 8771d0f8..82c700e7 100644 --- a/docs/user-guide/040-agents-protocols/170-websocket-agent.md +++ b/docs/user-guide/040-agents-protocols/170-websocket-agent.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -21,4 +21,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/docs/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md b/docs/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md index 36166cf0..98acc692 100644 --- a/docs/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md +++ b/docs/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md @@ -6,7 +6,7 @@ ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -112,7 +112,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git "a/docs/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" "b/docs/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" index c5839d65..7139be28 100644 --- "a/docs/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" +++ "b/docs/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" @@ -54,7 +54,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/docs/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md b/docs/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md index 94b0f5f8..772ac3e2 100644 --- a/docs/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md +++ b/docs/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md @@ -249,7 +249,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/docs/user-guide/050-manager-apis.md b/docs/user-guide/050-manager-apis.md index 10d9111c..9251063c 100644 --- a/docs/user-guide/050-manager-apis.md +++ b/docs/user-guide/050-manager-apis.md @@ -19,20 +19,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -51,7 +51,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -64,7 +64,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -82,7 +82,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -96,4 +96,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/docs/user-guide/060-rules-and-forecasting/40-groovy-rules.md b/docs/user-guide/060-rules-and-forecasting/40-groovy-rules.md index 3c0d8f61..f1dd15d8 100644 --- a/docs/user-guide/060-rules-and-forecasting/40-groovy-rules.md +++ b/docs/user-guide/060-rules-and-forecasting/40-groovy-rules.md @@ -12,21 +12,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -59,7 +59,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -97,7 +97,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/docs/user-guide/070-identity-and-security/10-realms-users-and-roles.md b/docs/user-guide/070-identity-and-security/10-realms-users-and-roles.md index 03c222e8..338f2e7d 100644 --- a/docs/user-guide/070-identity-and-security/10-realms-users-and-roles.md +++ b/docs/user-guide/070-identity-and-security/10-realms-users-and-roles.md @@ -15,7 +15,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../050-manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/docs/user-guide/080-gateways-and-devices/10-edge-gateway.md b/docs/user-guide/080-gateways-and-devices/10-edge-gateway.md index e717f57c..24cd4fcc 100644 --- a/docs/user-guide/080-gateways-and-devices/10-edge-gateway.md +++ b/docs/user-guide/080-gateways-and-devices/10-edge-gateway.md @@ -38,7 +38,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/docs/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md b/docs/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/docs/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md +++ b/docs/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/docs/user-guide/090-domains/10-create-your-energy-management-system.md b/docs/user-guide/090-domains/10-create-your-energy-management-system.md index f44a015d..89cd4fa2 100644 --- a/docs/user-guide/090-domains/10-create-your-energy-management-system.md +++ b/docs/user-guide/090-domains/10-create-your-energy-management-system.md @@ -11,7 +11,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../010-deploying/10-custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../010-deploying/10-custom-deployment.md) on how to do this. diff --git a/docusaurus.config.ts b/docusaurus.config.ts index ba7ffc6a..5de8eebf 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -134,12 +134,12 @@ const config: Config = { position: 'right', }, { - href: 'https://github.com/openremote/openremote', + href: 'https://github.com/openremote/core', label: 'GitHub', position: 'right', }, { - href: 'https://www.openremote.io/', + href: 'https://openremote.io/', label: 'Website', position: 'right', }, @@ -207,19 +207,19 @@ const config: Config = { items: [ { label: 'Website', - to: 'https://www.openremote.io/', + to: 'https://openremote.io/', }, { label: 'News', - to: 'https://www.openremote.io/news/', + to: 'https://openremote.io/news/', }, { label: 'Demo', - href: 'https://www.openremote.io/demo/', + href: 'https://openremote.io/demo/', }, { label: 'Source Code', - href: 'https://github.com/openremote/openremote/', + href: 'https://github.com/openremote/core/', }, { label: 'OSS Licensing', @@ -227,7 +227,7 @@ const config: Config = { }, { label: 'Contact', - href: 'https://www.openremote.io/contact/', + href: 'https://openremote.io/contact/', }, { label: 'Privacy Policy', diff --git a/versioned_docs/version-1.10.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.10.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.10.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.10.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.10.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.10.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.10.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.10.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.10.0/architecture/security.md b/versioned_docs/version-1.10.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.10.0/architecture/security.md +++ b/versioned_docs/version-1.10.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.10.0/developer-guide/data-migration.md b/versioned_docs/version-1.10.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.10.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.10.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.10.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.10.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.10.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.10.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.10.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.10.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.10.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.10.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.10.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.10.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.10.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.10.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.10.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.10.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.10.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.10.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.10.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.10.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.10.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.10.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.10.0/introduction.md b/versioned_docs/version-1.10.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.10.0/introduction.md +++ b/versioned_docs/version-1.10.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.10.0/quick-start.md b/versioned_docs/version-1.10.0/quick-start.md index 1620d00e..35a752e2 100644 --- a/versioned_docs/version-1.10.0/quick-start.md +++ b/versioned_docs/version-1.10.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/mqtt.md index ba5584b7..e5231d80 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/simulator.md index c70a0714..c7aff2fa 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/simulator.md @@ -16,8 +16,8 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.10.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.10.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.10.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.10.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.10.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.10.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.10.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.10.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.10.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.10.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.10.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.10.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.10.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.10.0/user-guide/deploying/aws-marketplace.md index dc3e7166..36312e20 100644 --- a/versioned_docs/version-1.10.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.10.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the `EC2` instance using the provided `CloudFormation` te :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.10.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.10.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.10.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.10.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.10.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.10.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.10.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.10.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.10.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.10.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.10.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.10.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.10.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.10.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.10.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.10.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.10.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.10.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.10.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.10.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.10.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.10.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.10.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.10.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.10.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.10.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.10.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.10.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.10.0/user-guide/manager-apis.md b/versioned_docs/version-1.10.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.10.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.10.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.10.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.10.0/user-guide/manager-ui/manager-ui.md index f3fd3390..8f23f1f1 100644 --- a/versioned_docs/version-1.10.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.10.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.10.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.10.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.10.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.10.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.10.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.10.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.10.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.10.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.11.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.11.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.11.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.11.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.11.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.11.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.11.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.11.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.11.0/architecture/security.md b/versioned_docs/version-1.11.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.11.0/architecture/security.md +++ b/versioned_docs/version-1.11.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.11.0/developer-guide/data-migration.md b/versioned_docs/version-1.11.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.11.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.11.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.11.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.11.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.11.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.11.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.11.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.11.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.11.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.11.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.11.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.11.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.11.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.11.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.11.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.11.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.11.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.11.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.11.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.11.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.11.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.11.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.11.0/introduction.md b/versioned_docs/version-1.11.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.11.0/introduction.md +++ b/versioned_docs/version-1.11.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.11.0/quick-start.md b/versioned_docs/version-1.11.0/quick-start.md index 1620d00e..35a752e2 100644 --- a/versioned_docs/version-1.11.0/quick-start.md +++ b/versioned_docs/version-1.11.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/mqtt.md index ba5584b7..e5231d80 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/simulator.md index c70a0714..c7aff2fa 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/simulator.md @@ -16,8 +16,8 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.11.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.11.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.11.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.11.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.11.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.11.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.11.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.11.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.11.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.11.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.11.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.11.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.11.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.11.0/user-guide/deploying/aws-marketplace.md index dc3e7166..36312e20 100644 --- a/versioned_docs/version-1.11.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.11.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the `EC2` instance using the provided `CloudFormation` te :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.11.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.11.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.11.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.11.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.11.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.11.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.11.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.11.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.11.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.11.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.11.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.11.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.11.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.11.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.11.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.11.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.11.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.11.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.11.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.11.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.11.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.11.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.11.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.11.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.11.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.11.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.11.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.11.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.11.0/user-guide/manager-apis.md b/versioned_docs/version-1.11.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.11.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.11.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.11.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.11.0/user-guide/manager-ui/manager-ui.md index 53b8160c..f52796fe 100644 --- a/versioned_docs/version-1.11.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.11.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.11.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.11.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.11.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.11.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.11.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.11.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.11.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.11.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.12.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.12.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.12.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.12.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.12.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.12.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.12.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.12.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.12.0/architecture/overall-architecture.md b/versioned_docs/version-1.12.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.12.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.12.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.12.0/architecture/security.md b/versioned_docs/version-1.12.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.12.0/architecture/security.md +++ b/versioned_docs/version-1.12.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.12.0/developer-guide/data-migration.md b/versioned_docs/version-1.12.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.12.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.12.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.12.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.12.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.12.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.12.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.12.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.12.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.12.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.12.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.12.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.12.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.12.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.12.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.12.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.12.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.12.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.12.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.12.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.12.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.12.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.12.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.12.0/introduction.md b/versioned_docs/version-1.12.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.12.0/introduction.md +++ b/versioned_docs/version-1.12.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.12.0/quick-start.md b/versioned_docs/version-1.12.0/quick-start.md index 1620d00e..35a752e2 100644 --- a/versioned_docs/version-1.12.0/quick-start.md +++ b/versioned_docs/version-1.12.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/mqtt.md index ba5584b7..e5231d80 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/simulator.md index c0b5dcf7..450db064 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/simulator.md @@ -15,8 +15,8 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.12.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.12.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.12.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.12.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.12.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.12.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.12.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.12.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.12.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.12.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.12.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.12.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.12.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.12.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.12.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.12.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.12.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.12.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.12.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.12.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.12.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.12.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.12.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.12.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.12.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.12.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.12.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.12.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.12.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.12.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.12.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.12.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.12.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.12.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.12.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.12.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.12.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.12.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.12.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.12.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.12.0/user-guide/manager-apis.md b/versioned_docs/version-1.12.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.12.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.12.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.12.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.12.0/user-guide/manager-ui/appearance.md index 6b2d3397..cf498cfa 100644 --- a/versioned_docs/version-1.12.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.12.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.12.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.12.0/user-guide/manager-ui/manager-ui.md index c3ded0bd..f259766b 100644 --- a/versioned_docs/version-1.12.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.12.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.12.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.12.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.12.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.12.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.12.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.12.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.12.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.12.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.13.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.13.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.13.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.13.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.13.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.13.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.13.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.13.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.13.0/architecture/overall-architecture.md b/versioned_docs/version-1.13.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.13.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.13.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.13.0/architecture/security.md b/versioned_docs/version-1.13.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.13.0/architecture/security.md +++ b/versioned_docs/version-1.13.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.13.0/developer-guide/data-migration.md b/versioned_docs/version-1.13.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.13.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.13.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.13.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.13.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.13.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.13.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.13.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.13.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.13.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.13.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.13.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.13.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.13.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.13.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.13.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.13.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.13.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.13.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.13.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.13.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.13.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.13.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.13.0/introduction.md b/versioned_docs/version-1.13.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.13.0/introduction.md +++ b/versioned_docs/version-1.13.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.13.0/quick-start.md b/versioned_docs/version-1.13.0/quick-start.md index 1620d00e..35a752e2 100644 --- a/versioned_docs/version-1.13.0/quick-start.md +++ b/versioned_docs/version-1.13.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/mqtt.md index ba5584b7..e5231d80 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/simulator.md index 9d17b76f..e21dcc1b 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.13.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.13.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.13.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.13.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.13.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.13.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.13.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.13.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.13.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.13.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.13.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.13.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.13.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.13.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.13.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.13.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.13.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.13.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.13.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.13.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.13.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.13.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.13.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.13.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.13.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.13.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.13.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.13.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.13.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.13.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.13.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.13.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.13.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.13.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.13.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.13.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.13.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.13.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.13.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.13.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.13.0/user-guide/manager-apis.md b/versioned_docs/version-1.13.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.13.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.13.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.13.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.13.0/user-guide/manager-ui/appearance.md index 6b2d3397..cf498cfa 100644 --- a/versioned_docs/version-1.13.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.13.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.13.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.13.0/user-guide/manager-ui/manager-ui.md index c3ded0bd..f259766b 100644 --- a/versioned_docs/version-1.13.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.13.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.13.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.13.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.13.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.13.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.13.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.13.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.13.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.13.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.14.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.14.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.14.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.14.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.14.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.14.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.14.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.14.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.14.0/architecture/overall-architecture.md b/versioned_docs/version-1.14.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.14.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.14.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.14.0/architecture/security.md b/versioned_docs/version-1.14.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.14.0/architecture/security.md +++ b/versioned_docs/version-1.14.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.14.0/developer-guide/data-migration.md b/versioned_docs/version-1.14.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.14.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.14.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.14.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.14.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.14.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.14.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.14.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.14.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.14.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.14.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.14.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.14.0/developer-guide/preparing-the-environment.md index 8fcf3b3f..21071213 100644 --- a/versioned_docs/version-1.14.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.14.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.14.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.14.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.14.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.14.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.14.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.14.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.14.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.14.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.14.0/introduction.md b/versioned_docs/version-1.14.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.14.0/introduction.md +++ b/versioned_docs/version-1.14.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.14.0/quick-start.md b/versioned_docs/version-1.14.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.14.0/quick-start.md +++ b/versioned_docs/version-1.14.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/simulator.md index 8ebc55d4..c51c6fd9 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.14.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.14.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.14.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.14.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.14.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.14.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.14.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.14.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.14.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.14.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.14.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.14.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.14.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.14.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.14.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.14.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.14.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.14.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.14.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.14.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.14.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.14.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.14.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.14.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.14.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.14.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.14.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.14.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.14.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.14.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.14.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.14.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.14.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.14.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.14.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.14.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.14.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.14.0/user-guide/manager-apis.md b/versioned_docs/version-1.14.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.14.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.14.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.14.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.14.0/user-guide/manager-ui/appearance.md index 6b2d3397..cf498cfa 100644 --- a/versioned_docs/version-1.14.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.14.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.14.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.14.0/user-guide/manager-ui/manager-ui.md index 6c402643..814ecb7e 100644 --- a/versioned_docs/version-1.14.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.14.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.14.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.14.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.14.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.14.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.14.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.14.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.14.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.14.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.15.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.15.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.15.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.15.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.15.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.15.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.15.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.15.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.15.0/architecture/overall-architecture.md b/versioned_docs/version-1.15.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.15.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.15.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.15.0/architecture/security.md b/versioned_docs/version-1.15.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.15.0/architecture/security.md +++ b/versioned_docs/version-1.15.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.15.0/developer-guide/data-migration.md b/versioned_docs/version-1.15.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.15.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.15.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.15.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.15.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.15.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.15.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.15.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.15.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.15.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.15.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.15.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.15.0/developer-guide/preparing-the-environment.md index 8fcf3b3f..21071213 100644 --- a/versioned_docs/version-1.15.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.15.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.15.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.15.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.15.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.15.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.15.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.15.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.15.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.15.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.15.0/introduction.md b/versioned_docs/version-1.15.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.15.0/introduction.md +++ b/versioned_docs/version-1.15.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.15.0/quick-start.md b/versioned_docs/version-1.15.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.15.0/quick-start.md +++ b/versioned_docs/version-1.15.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/simulator.md index 8ebc55d4..c51c6fd9 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.15.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.15.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.15.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.15.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.15.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.15.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.15.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.15.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.15.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.15.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.15.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.15.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.15.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.15.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.15.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.15.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.15.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.15.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.15.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.15.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.15.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.15.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.15.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.15.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.15.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.15.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.15.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.15.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.15.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.15.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.15.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.15.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.15.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.15.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.15.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.15.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.15.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.15.0/user-guide/manager-apis.md b/versioned_docs/version-1.15.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.15.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.15.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.15.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.15.0/user-guide/manager-ui/appearance.md index 6b2d3397..cf498cfa 100644 --- a/versioned_docs/version-1.15.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.15.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.15.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.15.0/user-guide/manager-ui/manager-ui.md index 6c402643..814ecb7e 100644 --- a/versioned_docs/version-1.15.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.15.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.15.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.15.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.15.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.15.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.15.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.15.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.15.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.15.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.16.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.16.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.16.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.16.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.16.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.16.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.16.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.16.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.16.0/architecture/overall-architecture.md b/versioned_docs/version-1.16.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.16.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.16.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.16.0/architecture/security.md b/versioned_docs/version-1.16.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.16.0/architecture/security.md +++ b/versioned_docs/version-1.16.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.16.0/developer-guide/data-migration.md b/versioned_docs/version-1.16.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.16.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.16.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.16.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.16.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.16.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.16.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.16.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.16.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.16.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.16.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.16.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.16.0/developer-guide/preparing-the-environment.md index 8fcf3b3f..21071213 100644 --- a/versioned_docs/version-1.16.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.16.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.16.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.16.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.16.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.16.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.16.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.16.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.16.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.16.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.16.0/introduction.md b/versioned_docs/version-1.16.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.16.0/introduction.md +++ b/versioned_docs/version-1.16.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.16.0/quick-start.md b/versioned_docs/version-1.16.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.16.0/quick-start.md +++ b/versioned_docs/version-1.16.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/simulator.md index 8ebc55d4..c51c6fd9 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.16.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.16.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.16.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.16.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.16.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.16.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.16.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.16.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.16.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.16.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.16.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.16.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.16.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.16.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.16.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.16.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.16.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.16.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.16.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.16.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.16.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.16.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.16.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.16.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.16.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.16.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.16.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.16.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.16.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.16.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.16.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.16.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.16.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.16.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.16.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.16.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.16.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.16.0/user-guide/manager-apis.md b/versioned_docs/version-1.16.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.16.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.16.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.16.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.16.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.16.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.16.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.16.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.16.0/user-guide/manager-ui/manager-ui.md index 6c402643..814ecb7e 100644 --- a/versioned_docs/version-1.16.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.16.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.16.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.16.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.16.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.16.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.16.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.16.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.16.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.16.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.17.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.17.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.17.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.17.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.17.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.17.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.17.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.17.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.17.0/architecture/overall-architecture.md b/versioned_docs/version-1.17.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.17.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.17.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.17.0/architecture/security.md b/versioned_docs/version-1.17.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.17.0/architecture/security.md +++ b/versioned_docs/version-1.17.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.17.0/developer-guide/data-migration.md b/versioned_docs/version-1.17.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.17.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.17.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.17.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.17.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.17.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.17.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.17.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.17.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.17.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.17.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.17.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.17.0/developer-guide/preparing-the-environment.md index 8fcf3b3f..21071213 100644 --- a/versioned_docs/version-1.17.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.17.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.17.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.17.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.17.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.17.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.17.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.17.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.17.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.17.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.17.0/introduction.md b/versioned_docs/version-1.17.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.17.0/introduction.md +++ b/versioned_docs/version-1.17.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.17.0/quick-start.md b/versioned_docs/version-1.17.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.17.0/quick-start.md +++ b/versioned_docs/version-1.17.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/simulator.md index 8ebc55d4..c51c6fd9 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.17.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.17.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.17.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.17.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.17.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.17.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.17.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.17.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.17.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.17.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.17.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.17.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.17.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.17.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.17.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.17.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.17.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.17.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.17.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.17.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.17.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.17.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.17.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.17.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.17.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.17.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.17.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.17.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.17.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.17.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.17.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.17.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.17.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.17.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.17.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.17.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.17.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.17.0/user-guide/manager-apis.md b/versioned_docs/version-1.17.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.17.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.17.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.17.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.17.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.17.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.17.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.17.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.17.0/user-guide/manager-ui/manager-ui.md index 6c402643..814ecb7e 100644 --- a/versioned_docs/version-1.17.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.17.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.17.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.17.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.17.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.17.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.17.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.17.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.17.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.17.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.18.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.18.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.18.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.18.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.18.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.18.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.18.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.18.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.18.0/architecture/overall-architecture.md b/versioned_docs/version-1.18.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.18.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.18.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.18.0/architecture/security.md b/versioned_docs/version-1.18.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.18.0/architecture/security.md +++ b/versioned_docs/version-1.18.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.18.0/developer-guide/data-migration.md b/versioned_docs/version-1.18.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.18.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.18.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.18.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.18.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.18.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.18.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.18.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.18.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.18.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.18.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.18.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.18.0/developer-guide/preparing-the-environment.md index 6a486f83..321880d6 100644 --- a/versioned_docs/version-1.18.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.18.0/developer-guide/preparing-the-environment.md @@ -52,5 +52,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.18.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.18.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.18.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.18.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.18.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.18.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.18.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.18.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.18.0/introduction.md b/versioned_docs/version-1.18.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.18.0/introduction.md +++ b/versioned_docs/version-1.18.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.18.0/quick-start.md b/versioned_docs/version-1.18.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.18.0/quick-start.md +++ b/versioned_docs/version-1.18.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/simulator.md index 8ebc55d4..c51c6fd9 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.18.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.18.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.18.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.18.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.18.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.18.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.18.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.18.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.18.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.18.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.18.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.18.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.18.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.18.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.18.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.18.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.18.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.18.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.18.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.18.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.18.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.18.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.18.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.18.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.18.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.18.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.18.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.18.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.18.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.18.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.18.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.18.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.18.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.18.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.18.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.18.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.18.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.18.0/user-guide/manager-apis.md b/versioned_docs/version-1.18.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.18.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.18.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.18.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.18.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.18.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.18.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.18.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.18.0/user-guide/manager-ui/manager-ui.md index 6c402643..814ecb7e 100644 --- a/versioned_docs/version-1.18.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.18.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.18.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.18.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.18.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.18.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.18.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.18.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.18.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.18.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.19.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.19.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.19.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.19.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.19.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.19.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.19.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.19.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.19.0/architecture/overall-architecture.md b/versioned_docs/version-1.19.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.19.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.19.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.19.0/architecture/security.md b/versioned_docs/version-1.19.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.19.0/architecture/security.md +++ b/versioned_docs/version-1.19.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.19.0/developer-guide/data-migration.md b/versioned_docs/version-1.19.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.19.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.19.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.19.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.19.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.19.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.19.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.19.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.19.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.19.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.19.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.19.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.19.0/developer-guide/preparing-the-environment.md index 6a486f83..321880d6 100644 --- a/versioned_docs/version-1.19.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.19.0/developer-guide/preparing-the-environment.md @@ -52,5 +52,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.19.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.19.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.19.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.19.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.19.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.19.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.19.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.19.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.19.0/introduction.md b/versioned_docs/version-1.19.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.19.0/introduction.md +++ b/versioned_docs/version-1.19.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.19.0/quick-start.md b/versioned_docs/version-1.19.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.19.0/quick-start.md +++ b/versioned_docs/version-1.19.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.19.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.19.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.19.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.19.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.19.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.19.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.19.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.19.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.19.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.19.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.19.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.19.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.19.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.19.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.19.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.19.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.19.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.19.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.19.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.19.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.19.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.19.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.19.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.19.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.19.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.19.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.19.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.19.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.19.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.19.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.19.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.19.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.19.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.19.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.19.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.19.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.19.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.19.0/user-guide/manager-apis.md b/versioned_docs/version-1.19.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.19.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.19.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.19.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.19.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.19.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.19.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.19.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.19.0/user-guide/manager-ui/manager-ui.md index fe0af12e..69547ed0 100644 --- a/versioned_docs/version-1.19.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.19.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.19.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.19.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.19.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.19.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.19.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.19.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.19.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.19.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.2.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.2.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.2.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.2.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.2.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.2.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.2.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.2.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.2.0/architecture/security.md b/versioned_docs/version-1.2.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.2.0/architecture/security.md +++ b/versioned_docs/version-1.2.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.2.0/developer-guide/data-migration.md b/versioned_docs/version-1.2.0/developer-guide/data-migration.md index 374cc988..9c30150c 100644 --- a/versioned_docs/version-1.2.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.2.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.2.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.2.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.2.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.2.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.2.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.2.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.2.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.2.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.2.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.2.0/developer-guide/preparing-the-environment.md index b9171ac4..83da2dea 100644 --- a/versioned_docs/version-1.2.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.2.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.2.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.2.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.2.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.2.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.2.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.2.0/developer-guide/working-on-ui-and-apps.md index 77b51325..ab41e043 100644 --- a/versioned_docs/version-1.2.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.2.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -53,9 +53,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.2.0/introduction.md b/versioned_docs/version-1.2.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.2.0/introduction.md +++ b/versioned_docs/version-1.2.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.2.0/quick-start.md b/versioned_docs/version-1.2.0/quick-start.md index 8d73c3dc..250eb4ab 100644 --- a/versioned_docs/version-1.2.0/quick-start.md +++ b/versioned_docs/version-1.2.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/mqtt.md index 3d477120..a1fe216a 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/mqtt.md @@ -63,7 +63,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/overview.md index dec12a76..cf236f61 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/simulator.md index 5a5535f3..62ef56a6 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/simulator.md @@ -17,7 +17,7 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/snmp.md index 10a83a8d..559f9686 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/tcp.md index 690265fc..f83b03fa 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/udp.md index ab984d61..e64f3215 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/velbus.md index c0d353d2..465b983b 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 13 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.2.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.2.0/user-guide/agents-protocols/websocket-agent.md index f04908c6..2b38f68a 100644 --- a/versioned_docs/version-1.2.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.2.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.2.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.2.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.2.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.2.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.2.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.2.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.2.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.2.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.2.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.2.0/user-guide/deploying/aws-marketplace.md index 2b688455..bab1bec9 100644 --- a/versioned_docs/version-1.2.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.2.0/user-guide/deploying/aws-marketplace.md @@ -72,7 +72,7 @@ More information about getting (custom) map tiles can be found [here](https://do Before the system can use your custom map, it needs to know what the boundaries (coordinates) are and where the center of the map is. You must change these details in the `mapsettings.json` file. After that, you can provide a publicly accessible URL where the system can download this file. -An example file can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json). +An example file can be found [here](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json). ## E-mail Configuration diff --git a/versioned_docs/version-1.2.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.2.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.2.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.2.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.2.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.2.0/user-guide/deploying/custom-deployment.md index 0272850c..2655f56c 100644 --- a/versioned_docs/version-1.2.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.2.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.2.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.2.0/user-guide/deploying/release-management.md index 5b71759d..0c7857fb 100644 --- a/versioned_docs/version-1.2.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.2.0/user-guide/deploying/release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -116,5 +116,5 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory * openremote/console-ios: The CocoaPod "version" in the `ORLib/ORLib.podspec` file diff --git a/versioned_docs/version-1.2.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.2.0/user-guide/domains/create-your-energy-management-system.md index 93b407c8..25c9f640 100644 --- a/versioned_docs/version-1.2.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.2.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.2.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.2.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.2.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.2.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.2.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.2.0/user-guide/identity-and-security/realms-users-and-roles.md index a1a545c4..ce34bd98 100644 --- a/versioned_docs/version-1.2.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.2.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret and is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.2.0/user-guide/manager-apis.md b/versioned_docs/version-1.2.0/user-guide/manager-apis.md index 4598ff23..b62569a2 100644 --- a/versioned_docs/version-1.2.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.2.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -99,4 +99,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access to the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.2.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.2.0/user-guide/manager-ui/manager-ui.md index 453992e8..77c3fc83 100644 --- a/versioned_docs/version-1.2.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.2.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.2.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.2.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.2.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.2.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.2.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.2.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.2.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.2.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.20.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.20.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.20.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.20.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.20.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.20.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.20.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.20.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.20.0/architecture/overall-architecture.md b/versioned_docs/version-1.20.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.20.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.20.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.20.0/architecture/security.md b/versioned_docs/version-1.20.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.20.0/architecture/security.md +++ b/versioned_docs/version-1.20.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.20.0/developer-guide/data-migration.md b/versioned_docs/version-1.20.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.20.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.20.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.20.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.20.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.20.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.20.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.20.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.20.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.20.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.20.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.20.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.20.0/developer-guide/preparing-the-environment.md index 6a486f83..321880d6 100644 --- a/versioned_docs/version-1.20.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.20.0/developer-guide/preparing-the-environment.md @@ -52,5 +52,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.20.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.20.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.20.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.20.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.20.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.20.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.20.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.20.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.20.0/introduction.md b/versioned_docs/version-1.20.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.20.0/introduction.md +++ b/versioned_docs/version-1.20.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.20.0/quick-start.md b/versioned_docs/version-1.20.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.20.0/quick-start.md +++ b/versioned_docs/version-1.20.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.20.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.20.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.20.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.20.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.20.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.20.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.20.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.20.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.20.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.20.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.20.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.20.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.20.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.20.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.20.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.20.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.20.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.20.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.20.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.20.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.20.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.20.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.20.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.20.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.20.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.20.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.20.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.20.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.20.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.20.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.20.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.20.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.20.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.20.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.20.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.20.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.20.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.20.0/user-guide/manager-apis.md b/versioned_docs/version-1.20.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.20.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.20.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.20.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.20.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.20.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.20.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.20.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.20.0/user-guide/manager-ui/manager-ui.md index fe0af12e..69547ed0 100644 --- a/versioned_docs/version-1.20.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.20.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.20.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.20.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.20.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.20.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.20.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.20.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.20.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.20.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.21.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.21.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.21.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.21.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.21.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.21.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.21.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.21.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.21.0/architecture/overall-architecture.md b/versioned_docs/version-1.21.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.21.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.21.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.21.0/architecture/security.md b/versioned_docs/version-1.21.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.21.0/architecture/security.md +++ b/versioned_docs/version-1.21.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.21.0/developer-guide/data-migration.md b/versioned_docs/version-1.21.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.21.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.21.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.21.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.21.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.21.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.21.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.21.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.21.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.21.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.21.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.21.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.21.0/developer-guide/preparing-the-environment.md index 6a486f83..321880d6 100644 --- a/versioned_docs/version-1.21.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.21.0/developer-guide/preparing-the-environment.md @@ -52,5 +52,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.21.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.21.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.21.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.21.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.21.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.21.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.21.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.21.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.21.0/introduction.md b/versioned_docs/version-1.21.0/introduction.md index 6ba518ee..87c00277 100644 --- a/versioned_docs/version-1.21.0/introduction.md +++ b/versioned_docs/version-1.21.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.21.0/quick-start.md b/versioned_docs/version-1.21.0/quick-start.md index 5fa18bd6..f2aa9197 100644 --- a/versioned_docs/version-1.21.0/quick-start.md +++ b/versioned_docs/version-1.21.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.21.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.21.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.21.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.21.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.21.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.21.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.21.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.21.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.21.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.21.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.21.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.21.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.21.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.21.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.21.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.21.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.21.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.21.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.21.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.21.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.21.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.21.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.21.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.21.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.21.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.21.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.21.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.21.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.21.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.21.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.21.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.21.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.21.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.21.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.21.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.21.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.21.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.21.0/user-guide/manager-apis.md b/versioned_docs/version-1.21.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.21.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.21.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.21.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.21.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.21.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.21.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.21.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.21.0/user-guide/manager-ui/manager-ui.md index fe0af12e..69547ed0 100644 --- a/versioned_docs/version-1.21.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.21.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.21.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.21.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.21.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.21.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.21.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.21.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.21.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.21.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.22.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.22.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.22.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.22.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.22.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.22.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.22.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.22.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.22.0/architecture/overall-architecture.md b/versioned_docs/version-1.22.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.22.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.22.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.22.0/architecture/security.md b/versioned_docs/version-1.22.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.22.0/architecture/security.md +++ b/versioned_docs/version-1.22.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.22.0/developer-guide/data-migration.md b/versioned_docs/version-1.22.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.22.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.22.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.22.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.22.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.22.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.22.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.22.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.22.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.22.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.22.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.22.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.22.0/developer-guide/preparing-the-environment.md index 6a486f83..321880d6 100644 --- a/versioned_docs/version-1.22.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.22.0/developer-guide/preparing-the-environment.md @@ -52,5 +52,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.22.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.22.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.22.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.22.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.22.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.22.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.22.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.22.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.22.0/introduction.md b/versioned_docs/version-1.22.0/introduction.md index 50b025a3..b13998b3 100644 --- a/versioned_docs/version-1.22.0/introduction.md +++ b/versioned_docs/version-1.22.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.22.0/quick-start.md b/versioned_docs/version-1.22.0/quick-start.md index 1edaca86..9bb3252a 100644 --- a/versioned_docs/version-1.22.0/quick-start.md +++ b/versioned_docs/version-1.22.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.22.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.22.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.22.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.22.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.22.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.22.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.22.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.22.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.22.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.22.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.22.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.22.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.22.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.22.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.22.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.22.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.22.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.22.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.22.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.22.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.22.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.22.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.22.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.22.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.22.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.22.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.22.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.22.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.22.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.22.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.22.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.22.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.22.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.22.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.22.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.22.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.22.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.22.0/user-guide/manager-apis.md b/versioned_docs/version-1.22.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.22.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.22.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.22.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.22.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.22.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.22.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.22.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.22.0/user-guide/manager-ui/manager-ui.md index fe0af12e..69547ed0 100644 --- a/versioned_docs/version-1.22.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.22.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.22.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.22.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.22.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.22.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.22.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.22.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.22.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.22.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.23.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.23.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.23.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.23.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.23.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.23.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.23.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.23.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.23.0/architecture/overall-architecture.md b/versioned_docs/version-1.23.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.23.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.23.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.23.0/architecture/security.md b/versioned_docs/version-1.23.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.23.0/architecture/security.md +++ b/versioned_docs/version-1.23.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.23.0/developer-guide/data-migration.md b/versioned_docs/version-1.23.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.23.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.23.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.23.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.23.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.23.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.23.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.23.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.23.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.23.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.23.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.23.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.23.0/developer-guide/preparing-the-environment.md index 6a486f83..321880d6 100644 --- a/versioned_docs/version-1.23.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.23.0/developer-guide/preparing-the-environment.md @@ -52,5 +52,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.23.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.23.0/developer-guide/setting-up-an-ide.md index 2b61f1a6..85ed5894 100644 --- a/versioned_docs/version-1.23.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.23.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.23.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.23.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.23.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.23.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.23.0/introduction.md b/versioned_docs/version-1.23.0/introduction.md index 50b025a3..b13998b3 100644 --- a/versioned_docs/version-1.23.0/introduction.md +++ b/versioned_docs/version-1.23.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.23.0/quick-start.md b/versioned_docs/version-1.23.0/quick-start.md index 1edaca86..9bb3252a 100644 --- a/versioned_docs/version-1.23.0/quick-start.md +++ b/versioned_docs/version-1.23.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.23.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.23.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.23.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.23.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.23.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.23.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.23.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.23.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.23.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.23.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.23.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.23.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.23.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.23.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.23.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.23.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.23.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.23.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.23.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.23.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.23.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.23.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.23.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.23.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.23.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.23.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.23.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.23.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.23.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.23.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.23.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.23.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.23.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.23.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.23.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.23.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.23.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.23.0/user-guide/manager-apis.md b/versioned_docs/version-1.23.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.23.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.23.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.23.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.23.0/user-guide/manager-ui/appearance.md index 42a4e6fd..4ce85530 100644 --- a/versioned_docs/version-1.23.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.23.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.23.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.23.0/user-guide/manager-ui/manager-ui.md index fe0af12e..69547ed0 100644 --- a/versioned_docs/version-1.23.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.23.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.23.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.23.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.23.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.23.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.23.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.23.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.23.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.23.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.24.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.24.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.24.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.24.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.24.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.24.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.24.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.24.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.24.0/architecture/overall-architecture.md b/versioned_docs/version-1.24.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.24.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.24.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.24.0/architecture/security.md b/versioned_docs/version-1.24.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.24.0/architecture/security.md +++ b/versioned_docs/version-1.24.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.24.0/developer-guide/data-migration.md b/versioned_docs/version-1.24.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.24.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.24.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.24.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.24.0/developer-guide/docker-compose-profiles.md index 18ef8705..95ae9f05 100644 --- a/versioned_docs/version-1.24.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.24.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.24.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.24.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.24.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.24.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.24.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.24.0/developer-guide/preparing-the-environment.md index 6a486f83..321880d6 100644 --- a/versioned_docs/version-1.24.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.24.0/developer-guide/preparing-the-environment.md @@ -52,5 +52,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.24.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.24.0/developer-guide/setting-up-an-ide.md index 2b61f1a6..85ed5894 100644 --- a/versioned_docs/version-1.24.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.24.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.24.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.24.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.24.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.24.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.24.0/introduction.md b/versioned_docs/version-1.24.0/introduction.md index 50b025a3..b13998b3 100644 --- a/versioned_docs/version-1.24.0/introduction.md +++ b/versioned_docs/version-1.24.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.24.0/quick-start.md b/versioned_docs/version-1.24.0/quick-start.md index 1edaca86..9bb3252a 100644 --- a/versioned_docs/version-1.24.0/quick-start.md +++ b/versioned_docs/version-1.24.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.24.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.24.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.24.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.24.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.24.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.24.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.24.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.24.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.24.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.24.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.24.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.24.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.24.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.24.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.24.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.24.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.24.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.24.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.24.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.24.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.24.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.24.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.24.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.24.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.24.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.24.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.24.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.24.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.24.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.24.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.24.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.24.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.24.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.24.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.24.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.24.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.24.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.24.0/user-guide/manager-apis.md b/versioned_docs/version-1.24.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.24.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.24.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.24.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.24.0/user-guide/manager-ui/appearance.md index 137fd79d..2de6802f 100644 --- a/versioned_docs/version-1.24.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.24.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.24.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.24.0/user-guide/manager-ui/manager-ui.md index fe0af12e..69547ed0 100644 --- a/versioned_docs/version-1.24.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.24.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.24.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.24.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.24.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.24.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.24.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.24.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.24.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.24.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.25.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.25.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.25.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.25.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.25.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.25.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.25.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.25.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.25.0/architecture/overall-architecture.md b/versioned_docs/version-1.25.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.25.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.25.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.25.0/architecture/security.md b/versioned_docs/version-1.25.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.25.0/architecture/security.md +++ b/versioned_docs/version-1.25.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.25.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.25.0/developer-guide/docker-compose-profiles.md index 28fa9738..0ff42cc9 100644 --- a/versioned_docs/version-1.25.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.25.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.25.0/developer-guide/extensions.md b/versioned_docs/version-1.25.0/developer-guide/extensions.md index 4e4db9f0..4c70dfed 100644 --- a/versioned_docs/version-1.25.0/developer-guide/extensions.md +++ b/versioned_docs/version-1.25.0/developer-guide/extensions.md @@ -42,4 +42,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/versioned_docs/version-1.25.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.25.0/developer-guide/preparing-the-environment.md index c88efdc0..574851df 100644 --- a/versioned_docs/version-1.25.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.25.0/developer-guide/preparing-the-environment.md @@ -42,5 +42,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.25.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.25.0/developer-guide/setting-up-an-ide.md index 0e996887..7eaac714 100644 --- a/versioned_docs/version-1.25.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.25.0/developer-guide/setting-up-an-ide.md @@ -43,7 +43,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.25.0/developer-guide/system-administration.md b/versioned_docs/version-1.25.0/developer-guide/system-administration.md index faaf0d05..6cc944bf 100644 --- a/versioned_docs/version-1.25.0/developer-guide/system-administration.md +++ b/versioned_docs/version-1.25.0/developer-guide/system-administration.md @@ -282,7 +282,7 @@ rm -r data/new data/old - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -416,7 +416,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/versioned_docs/version-1.25.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.25.0/developer-guide/working-on-ui-and-apps.md index 2342c29b..c50a1aa2 100644 --- a/versioned_docs/version-1.25.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.25.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 30 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.25.0/introduction.md b/versioned_docs/version-1.25.0/introduction.md index 50b025a3..b13998b3 100644 --- a/versioned_docs/version-1.25.0/introduction.md +++ b/versioned_docs/version-1.25.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.25.0/quick-start.md b/versioned_docs/version-1.25.0/quick-start.md index e13e8623..bf566685 100644 --- a/versioned_docs/version-1.25.0/quick-start.md +++ b/versioned_docs/version-1.25.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.25.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.25.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.25.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.25.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.25.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.25.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.25.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.25.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.25.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.25.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.25.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.25.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.25.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.25.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.25.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.25.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.25.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.25.0/user-guide/deploying/custom-deployment.md index a49a95de..120589fa 100644 --- a/versioned_docs/version-1.25.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.25.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.25.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.25.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.25.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.25.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.25.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.25.0/user-guide/deploying/release-management.md index 2c96b49e..c58e3a2e 100644 --- a/versioned_docs/version-1.25.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.25.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremoteVersion` in `gradle.properties` so this may not be needed] 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.25.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.25.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.25.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.25.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.25.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.25.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.25.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.25.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.25.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.25.0/user-guide/manager-apis.md b/versioned_docs/version-1.25.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.25.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.25.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.25.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.25.0/user-guide/manager-ui/appearance.md index 137fd79d..2de6802f 100644 --- a/versioned_docs/version-1.25.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.25.0/user-guide/manager-ui/appearance.md @@ -288,7 +288,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.25.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.25.0/user-guide/manager-ui/manager-ui.md index 75fd2a91..e4f936c7 100644 --- a/versioned_docs/version-1.25.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.25.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.25.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.25.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.25.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.25.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.25.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.25.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.25.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.25.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.26.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.26.0/architecture/asset-location-tracking.md index 0cfe7d0d..17845035 100644 --- a/versioned_docs/version-1.26.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.26.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.26.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.26.0/architecture/manager-endpoints-and-file-paths.md index 5e0515bc..f433ffea 100644 --- a/versioned_docs/version-1.26.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.26.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.26.0/architecture/overall-architecture.md b/versioned_docs/version-1.26.0/architecture/overall-architecture.md index 9152dabc..7252c81e 100644 --- a/versioned_docs/version-1.26.0/architecture/overall-architecture.md +++ b/versioned_docs/version-1.26.0/architecture/overall-architecture.md @@ -5,7 +5,7 @@ sidebar_position: 1 # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -51,7 +51,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -62,7 +62,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -70,14 +70,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.26.0/architecture/security.md b/versioned_docs/version-1.26.0/architecture/security.md index 91f2110c..cefe630c 100644 --- a/versioned_docs/version-1.26.0/architecture/security.md +++ b/versioned_docs/version-1.26.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 3 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.26.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.26.0/developer-guide/docker-compose-profiles.md index 28fa9738..0ff42cc9 100644 --- a/versioned_docs/version-1.26.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.26.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.26.0/developer-guide/extensions.md b/versioned_docs/version-1.26.0/developer-guide/extensions.md index 4e4db9f0..4c70dfed 100644 --- a/versioned_docs/version-1.26.0/developer-guide/extensions.md +++ b/versioned_docs/version-1.26.0/developer-guide/extensions.md @@ -42,4 +42,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/versioned_docs/version-1.26.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.26.0/developer-guide/preparing-the-environment.md index c88efdc0..574851df 100644 --- a/versioned_docs/version-1.26.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.26.0/developer-guide/preparing-the-environment.md @@ -42,5 +42,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.26.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.26.0/developer-guide/setting-up-an-ide.md index 0e996887..7eaac714 100644 --- a/versioned_docs/version-1.26.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.26.0/developer-guide/setting-up-an-ide.md @@ -43,7 +43,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.26.0/developer-guide/system-administration.md b/versioned_docs/version-1.26.0/developer-guide/system-administration.md index faaf0d05..6cc944bf 100644 --- a/versioned_docs/version-1.26.0/developer-guide/system-administration.md +++ b/versioned_docs/version-1.26.0/developer-guide/system-administration.md @@ -282,7 +282,7 @@ rm -r data/new data/old - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -416,7 +416,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/versioned_docs/version-1.26.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.26.0/developer-guide/working-on-ui-and-apps.md index 2342c29b..c50a1aa2 100644 --- a/versioned_docs/version-1.26.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.26.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 30 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.26.0/introduction.md b/versioned_docs/version-1.26.0/introduction.md index 50b025a3..b13998b3 100644 --- a/versioned_docs/version-1.26.0/introduction.md +++ b/versioned_docs/version-1.26.0/introduction.md @@ -10,13 +10,13 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -30,7 +30,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.26.0/quick-start.md b/versioned_docs/version-1.26.0/quick-start.md index e13e8623..bf566685 100644 --- a/versioned_docs/version-1.26.0/quick-start.md +++ b/versioned_docs/version-1.26.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/http.md index 70c530f9..b850ae1f 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/knx.md index e45a1f5d..19cb2105 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/mqtt.md index a2ec9e73..a8dfbe1b 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/simulator.md index b9b659b4..406d929a 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/simulator.md @@ -15,9 +15,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/snmp.md index c01d628c..332bfd9c 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/tcp.md index 538215c0..c70400f1 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/udp.md index 6d36b255..edfdbece 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/velbus.md index 2b05b04d..5eace11b 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 16 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.26.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.26.0/user-guide/agents-protocols/websocket-agent.md index 36b2f5b0..88ff2375 100644 --- a/versioned_docs/version-1.26.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.26.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.26.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.26.0/user-guide/assets-agents-and-attributes.md index c0a3e285..59097c56 100644 --- a/versioned_docs/version-1.26.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.26.0/user-guide/assets-agents-and-attributes.md @@ -37,7 +37,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -66,7 +66,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -78,7 +78,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -91,4 +91,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.26.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.26.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.26.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.26.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.26.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.26.0/user-guide/deploying/aws-marketplace.md index 19bec02d..387891ea 100644 --- a/versioned_docs/version-1.26.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.26.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.26.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.26.0/user-guide/deploying/custom-deployment.md index a49a95de..120589fa 100644 --- a/versioned_docs/version-1.26.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.26.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.26.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.26.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.26.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.26.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.26.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.26.0/user-guide/deploying/release-management.md index 2c96b49e..c58e3a2e 100644 --- a/versioned_docs/version-1.26.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.26.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremoteVersion` in `gradle.properties` so this may not be needed] 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.26.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.26.0/user-guide/domains/create-your-energy-management-system.md index 1fcfac6e..dce4291e 100644 --- a/versioned_docs/version-1.26.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.26.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/edge-gateway.md b/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/edge-gateway.md index 81fd0969..74cc31a4 100644 --- a/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/edge-gateway.md +++ b/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/edge-gateway.md @@ -42,7 +42,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.26.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.26.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.26.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.26.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.26.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.26.0/user-guide/manager-apis.md b/versioned_docs/version-1.26.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.26.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.26.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.26.0/user-guide/manager-ui/appearance.md b/versioned_docs/version-1.26.0/user-guide/manager-ui/appearance.md index 217bd0b4..3fc93af9 100644 --- a/versioned_docs/version-1.26.0/user-guide/manager-ui/appearance.md +++ b/versioned_docs/version-1.26.0/user-guide/manager-ui/appearance.md @@ -351,7 +351,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.26.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.26.0/user-guide/manager-ui/manager-ui.md index 75fd2a91..e4f936c7 100644 --- a/versioned_docs/version-1.26.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.26.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.26.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.26.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.26.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.26.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.26.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.26.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.26.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.26.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.27.0/10-introduction.md b/versioned_docs/version-1.27.0/10-introduction.md index ba4b9057..77f9e432 100644 --- a/versioned_docs/version-1.27.0/10-introduction.md +++ b/versioned_docs/version-1.27.0/10-introduction.md @@ -6,13 +6,13 @@ ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -26,7 +26,7 @@ The OpenRemote [Frontend](./developer-guide/110-working-on-ui-and-apps.md) simpl * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.27.0/20-quick-start.md b/versioned_docs/version-1.27.0/20-quick-start.md index 7ad73062..d775e99b 100644 --- a/versioned_docs/version-1.27.0/20-quick-start.md +++ b/versioned_docs/version-1.27.0/20-quick-start.md @@ -13,7 +13,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.27.0/architecture/10-overall-architecture.md b/versioned_docs/version-1.27.0/architecture/10-overall-architecture.md index 1ba90ac2..e617e16f 100644 --- a/versioned_docs/version-1.27.0/architecture/10-overall-architecture.md +++ b/versioned_docs/version-1.27.0/architecture/10-overall-architecture.md @@ -1,7 +1,7 @@ # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -47,7 +47,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -58,7 +58,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -66,14 +66,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.27.0/architecture/20-manager-endpoints-and-file-paths.md b/versioned_docs/version-1.27.0/architecture/20-manager-endpoints-and-file-paths.md index fe6050bf..9b777ac8 100644 --- a/versioned_docs/version-1.27.0/architecture/20-manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.27.0/architecture/20-manager-endpoints-and-file-paths.md @@ -30,11 +30,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.27.0/architecture/30-security.md b/versioned_docs/version-1.27.0/architecture/30-security.md index 6e4d6f6a..4a955b1a 100644 --- a/versioned_docs/version-1.27.0/architecture/30-security.md +++ b/versioned_docs/version-1.27.0/architecture/30-security.md @@ -1,7 +1,7 @@ # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.27.0/architecture/50-asset-location-tracking.md b/versioned_docs/version-1.27.0/architecture/50-asset-location-tracking.md index c00e4a15..48d1c0cb 100644 --- a/versioned_docs/version-1.27.0/architecture/50-asset-location-tracking.md +++ b/versioned_docs/version-1.27.0/architecture/50-asset-location-tracking.md @@ -60,7 +60,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.27.0/developer-guide/010-preparing-the-environment.md b/versioned_docs/version-1.27.0/developer-guide/010-preparing-the-environment.md index 56359240..af01d414 100644 --- a/versioned_docs/version-1.27.0/developer-guide/010-preparing-the-environment.md +++ b/versioned_docs/version-1.27.0/developer-guide/010-preparing-the-environment.md @@ -38,5 +38,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.27.0/developer-guide/020-setting-up-an-ide.md b/versioned_docs/version-1.27.0/developer-guide/020-setting-up-an-ide.md index 86d321e7..7f572328 100644 --- a/versioned_docs/version-1.27.0/developer-guide/020-setting-up-an-ide.md +++ b/versioned_docs/version-1.27.0/developer-guide/020-setting-up-an-ide.md @@ -39,7 +39,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.27.0/developer-guide/030-docker-compose-profiles.md b/versioned_docs/version-1.27.0/developer-guide/030-docker-compose-profiles.md index 2dd51e10..438b7965 100644 --- a/versioned_docs/version-1.27.0/developer-guide/030-docker-compose-profiles.md +++ b/versioned_docs/version-1.27.0/developer-guide/030-docker-compose-profiles.md @@ -10,7 +10,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.27.0/developer-guide/080-extensions.md b/versioned_docs/version-1.27.0/developer-guide/080-extensions.md index 2f0bfd79..e583d41d 100644 --- a/versioned_docs/version-1.27.0/developer-guide/080-extensions.md +++ b/versioned_docs/version-1.27.0/developer-guide/080-extensions.md @@ -38,4 +38,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/versioned_docs/version-1.27.0/developer-guide/100-system-administration.md b/versioned_docs/version-1.27.0/developer-guide/100-system-administration.md index 06e3f3fd..7797e10a 100644 --- a/versioned_docs/version-1.27.0/developer-guide/100-system-administration.md +++ b/versioned_docs/version-1.27.0/developer-guide/100-system-administration.md @@ -322,7 +322,7 @@ When executing the automation, AWS will perform several actions under the hood. - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -456,7 +456,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/versioned_docs/version-1.27.0/developer-guide/110-working-on-ui-and-apps.md b/versioned_docs/version-1.27.0/developer-guide/110-working-on-ui-and-apps.md index 2e76a10e..9e7a8281 100644 --- a/versioned_docs/version-1.27.0/developer-guide/110-working-on-ui-and-apps.md +++ b/versioned_docs/version-1.27.0/developer-guide/110-working-on-ui-and-apps.md @@ -1,7 +1,7 @@ # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -46,9 +46,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.27.0/user-guide/010-deploying/10-custom-deployment.md b/versioned_docs/version-1.27.0/user-guide/010-deploying/10-custom-deployment.md index efda80ee..9f8887c0 100644 --- a/versioned_docs/version-1.27.0/user-guide/010-deploying/10-custom-deployment.md +++ b/versioned_docs/version-1.27.0/user-guide/010-deploying/10-custom-deployment.md @@ -38,19 +38,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/050-agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/130-working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -58,7 +58,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.27.0/user-guide/010-deploying/30-aws-cloudformation.md b/versioned_docs/version-1.27.0/user-guide/010-deploying/30-aws-cloudformation.md index ca31739d..4c1e3ab3 100644 --- a/versioned_docs/version-1.27.0/user-guide/010-deploying/30-aws-cloudformation.md +++ b/versioned_docs/version-1.27.0/user-guide/010-deploying/30-aws-cloudformation.md @@ -1,6 +1,6 @@ # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.27.0/user-guide/010-deploying/40-aws-marketplace.md b/versioned_docs/version-1.27.0/user-guide/010-deploying/40-aws-marketplace.md index 8be63c5a..fb9e9136 100644 --- a/versioned_docs/version-1.27.0/user-guide/010-deploying/40-aws-marketplace.md +++ b/versioned_docs/version-1.27.0/user-guide/010-deploying/40-aws-marketplace.md @@ -1,7 +1,7 @@ # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -104,7 +104,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.27.0/user-guide/010-deploying/50-kubernetes.md b/versioned_docs/version-1.27.0/user-guide/010-deploying/50-kubernetes.md index de0fa48d..3c9d8c9e 100644 --- a/versioned_docs/version-1.27.0/user-guide/010-deploying/50-kubernetes.md +++ b/versioned_docs/version-1.27.0/user-guide/010-deploying/50-kubernetes.md @@ -3,9 +3,9 @@ In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.27.0/user-guide/010-deploying/80-release-management.md b/versioned_docs/version-1.27.0/user-guide/010-deploying/80-release-management.md index 1dcc8acc..59af5fc6 100644 --- a/versioned_docs/version-1.27.0/user-guide/010-deploying/80-release-management.md +++ b/versioned_docs/version-1.27.0/user-guide/010-deploying/80-release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.26.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremote` version in `gradle/libs.versions.toml` so this may not be needed] 2. Java code: Update the `openremote` version in the `gradle/libs.versions.toml` file @@ -116,6 +116,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.27.0/user-guide/020-manager-ui/10-manager-ui.md b/versioned_docs/version-1.27.0/user-guide/020-manager-ui/10-manager-ui.md index e6c90a02..e0d48aaa 100644 --- a/versioned_docs/version-1.27.0/user-guide/020-manager-ui/10-manager-ui.md +++ b/versioned_docs/version-1.27.0/user-guide/020-manager-ui/10-manager-ui.md @@ -4,7 +4,7 @@ slug: /user-guide/manager-ui/ # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../060-rules-and-forecasting/50-forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.27.0/user-guide/020-manager-ui/20-on-mobile.md b/versioned_docs/version-1.27.0/user-guide/020-manager-ui/20-on-mobile.md index 23f6ab04..8d361c77 100644 --- a/versioned_docs/version-1.27.0/user-guide/020-manager-ui/20-on-mobile.md +++ b/versioned_docs/version-1.27.0/user-guide/020-manager-ui/20-on-mobile.md @@ -10,7 +10,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.27.0/user-guide/020-manager-ui/30-appearance.md b/versioned_docs/version-1.27.0/user-guide/020-manager-ui/30-appearance.md index 3615f2b5..adb7dd29 100644 --- a/versioned_docs/version-1.27.0/user-guide/020-manager-ui/30-appearance.md +++ b/versioned_docs/version-1.27.0/user-guide/020-manager-ui/30-appearance.md @@ -347,7 +347,7 @@ This is what the --or-app-colors look like in the demo deployment: } } ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.27.0/user-guide/030-assets-agents-and-attributes.md b/versioned_docs/version-1.27.0/user-guide/030-assets-agents-and-attributes.md index 35148f05..a6938678 100644 --- a/versioned_docs/version-1.27.0/user-guide/030-assets-agents-and-attributes.md +++ b/versioned_docs/version-1.27.0/user-guide/030-assets-agents-and-attributes.md @@ -33,7 +33,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -62,7 +62,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -74,7 +74,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -87,4 +87,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/010-overview.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/010-overview.md index 38acc3b8..fe13fda0 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/010-overview.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/010-overview.md @@ -1,17 +1,17 @@ # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -30,18 +30,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -51,9 +51,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -76,7 +76,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -85,14 +85,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md index 526f3091..be036513 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md @@ -35,8 +35,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/050-http.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/050-http.md index 511dc579..6483b051 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/050-http.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/050-http.md @@ -7,10 +7,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -37,8 +37,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/060-knx.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/060-knx.md index 80148fc5..2f951b57 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/060-knx.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/060-knx.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/090-mqtt.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/090-mqtt.md index 18aacc8d..02e507e8 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/090-mqtt.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/090-mqtt.md @@ -23,7 +23,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -62,7 +62,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](./010-overview.md) - [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/100-simulator.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/100-simulator.md index a56aa2fd..308b043b 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/100-simulator.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/100-simulator.md @@ -11,9 +11,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/110-snmp.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/110-snmp.md index 997bfc23..50f651ad 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/110-snmp.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/110-snmp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/130-tcp.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/130-tcp.md index 404074a8..56cdf014 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/130-tcp.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/130-tcp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/150-udp.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/150-udp.md index 210806c2..c52aeade 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/150-udp.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/150-udp.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/160-velbus.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/160-velbus.md index e68b35a9..d6e3b7fd 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/160-velbus.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/160-velbus.md @@ -2,8 +2,8 @@ Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -12,8 +12,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -24,7 +24,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/170-websocket-agent.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/170-websocket-agent.md index 8771d0f8..82c700e7 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/170-websocket-agent.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/170-websocket-agent.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -21,4 +21,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md index b607473d..059ce9ab 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md @@ -6,7 +6,7 @@ ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -112,7 +112,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" index c5839d65..7139be28 100644 --- "a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" @@ -54,7 +54,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md index 94b0f5f8..772ac3e2 100644 --- a/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md +++ b/versioned_docs/version-1.27.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md @@ -249,7 +249,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.27.0/user-guide/050-manager-apis.md b/versioned_docs/version-1.27.0/user-guide/050-manager-apis.md index 10d9111c..9251063c 100644 --- a/versioned_docs/version-1.27.0/user-guide/050-manager-apis.md +++ b/versioned_docs/version-1.27.0/user-guide/050-manager-apis.md @@ -19,20 +19,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -51,7 +51,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -64,7 +64,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -82,7 +82,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -96,4 +96,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.27.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md b/versioned_docs/version-1.27.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md index 3c0d8f61..f1dd15d8 100644 --- a/versioned_docs/version-1.27.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md +++ b/versioned_docs/version-1.27.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md @@ -12,21 +12,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -59,7 +59,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -97,7 +97,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.27.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md b/versioned_docs/version-1.27.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md index 19826794..d94425dc 100644 --- a/versioned_docs/version-1.27.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md +++ b/versioned_docs/version-1.27.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md @@ -15,7 +15,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../050-manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/10-edge-gateway.md b/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/10-edge-gateway.md index e717f57c..24cd4fcc 100644 --- a/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/10-edge-gateway.md +++ b/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/10-edge-gateway.md @@ -38,7 +38,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md b/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md +++ b/versioned_docs/version-1.27.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.27.0/user-guide/090-domains/10-create-your-energy-management-system.md b/versioned_docs/version-1.27.0/user-guide/090-domains/10-create-your-energy-management-system.md index f44a015d..89cd4fa2 100644 --- a/versioned_docs/version-1.27.0/user-guide/090-domains/10-create-your-energy-management-system.md +++ b/versioned_docs/version-1.27.0/user-guide/090-domains/10-create-your-energy-management-system.md @@ -11,7 +11,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../010-deploying/10-custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../010-deploying/10-custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.28.0/10-introduction.md b/versioned_docs/version-1.28.0/10-introduction.md index ba4b9057..77f9e432 100644 --- a/versioned_docs/version-1.28.0/10-introduction.md +++ b/versioned_docs/version-1.28.0/10-introduction.md @@ -6,13 +6,13 @@ ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -26,7 +26,7 @@ The OpenRemote [Frontend](./developer-guide/110-working-on-ui-and-apps.md) simpl * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.28.0/20-quick-start.md b/versioned_docs/version-1.28.0/20-quick-start.md index 7ad73062..d775e99b 100644 --- a/versioned_docs/version-1.28.0/20-quick-start.md +++ b/versioned_docs/version-1.28.0/20-quick-start.md @@ -13,7 +13,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.28.0/architecture/10-overall-architecture.md b/versioned_docs/version-1.28.0/architecture/10-overall-architecture.md index 1ba90ac2..e617e16f 100644 --- a/versioned_docs/version-1.28.0/architecture/10-overall-architecture.md +++ b/versioned_docs/version-1.28.0/architecture/10-overall-architecture.md @@ -1,7 +1,7 @@ # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -47,7 +47,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -58,7 +58,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -66,14 +66,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.28.0/architecture/20-manager-endpoints-and-file-paths.md b/versioned_docs/version-1.28.0/architecture/20-manager-endpoints-and-file-paths.md index fe6050bf..9b777ac8 100644 --- a/versioned_docs/version-1.28.0/architecture/20-manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.28.0/architecture/20-manager-endpoints-and-file-paths.md @@ -30,11 +30,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.28.0/architecture/30-security.md b/versioned_docs/version-1.28.0/architecture/30-security.md index 6e4d6f6a..4a955b1a 100644 --- a/versioned_docs/version-1.28.0/architecture/30-security.md +++ b/versioned_docs/version-1.28.0/architecture/30-security.md @@ -1,7 +1,7 @@ # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.28.0/architecture/50-asset-location-tracking.md b/versioned_docs/version-1.28.0/architecture/50-asset-location-tracking.md index c00e4a15..48d1c0cb 100644 --- a/versioned_docs/version-1.28.0/architecture/50-asset-location-tracking.md +++ b/versioned_docs/version-1.28.0/architecture/50-asset-location-tracking.md @@ -60,7 +60,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.28.0/developer-guide/010-preparing-the-environment.md b/versioned_docs/version-1.28.0/developer-guide/010-preparing-the-environment.md index 56359240..af01d414 100644 --- a/versioned_docs/version-1.28.0/developer-guide/010-preparing-the-environment.md +++ b/versioned_docs/version-1.28.0/developer-guide/010-preparing-the-environment.md @@ -38,5 +38,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.28.0/developer-guide/020-setting-up-an-ide.md b/versioned_docs/version-1.28.0/developer-guide/020-setting-up-an-ide.md index 86d321e7..7f572328 100644 --- a/versioned_docs/version-1.28.0/developer-guide/020-setting-up-an-ide.md +++ b/versioned_docs/version-1.28.0/developer-guide/020-setting-up-an-ide.md @@ -39,7 +39,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.28.0/developer-guide/025-code-formatting.md b/versioned_docs/version-1.28.0/developer-guide/025-code-formatting.md index b7cbefff..c90fcc37 100644 --- a/versioned_docs/version-1.28.0/developer-guide/025-code-formatting.md +++ b/versioned_docs/version-1.28.0/developer-guide/025-code-formatting.md @@ -57,7 +57,7 @@ Review the resulting changes before committing them. Depending on the file type, ## Backend and UI tasks -Repositories that separate backend and UI sources, such as `openremote/openremote` and OpenRemote custom projects, provide additional task groups. +Repositories that separate backend and UI sources, such as `openremote/core` and OpenRemote custom projects, provide additional task groups. To check only backend or UI sources, run: @@ -148,7 +148,7 @@ The hook provides a useful local safeguard, but it does not replace the formatti ## UI linting and formatting with Yarn -Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/openremote` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). +Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/core` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). Run these commands from the repository root. @@ -525,14 +525,14 @@ Only add commits that are overwhelmingly mechanical, such as repository-wide for Pull requests created before the repository-wide formatting commit can produce many merge conflicts, even when their functional changes do not overlap. -For `openremote/openremote`, the relevant commits are: +For `openremote/core`, the relevant commits are: | Commit | Description | | ------------------------------------------ | -------------------------------------------------------- | | `d6941d97c96ad70e7a6b764a4a4a7682aa906c8a` | Last commit before the repository-wide formatting change | | `e3a066dcf739efe08d3d0e51e477d2d652dd28f8` | Apply Spotless across the repository | -The `master` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. +The `main` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. 1. Fetch the latest repository history: @@ -570,7 +570,7 @@ The `master` branch can be merged into the pull request in stages so that functi git commit ``` -6. Merge the latest `master` branch as usual: +6. Merge the latest `main` branch as usual: ```shell git merge origin/master @@ -590,10 +590,10 @@ Do not use the `-s ours` merge strategy either. It would record the formatting c ### Upgrading an existing custom project to Spotless -Custom projects commonly use the reusable CI/CD workflow from the `master` branch of `openremote/openremote`: +Custom projects commonly use the reusable CI/CD workflow from the `main` branch of `openremote/core`: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Because this follows `master`, new workflow behaviour is inherited automatically. This includes the Spotless formatting checks. @@ -603,7 +603,7 @@ Because this follows `master`, new workflow behaviour is inherited automatically When there is not yet time to upgrade a custom project, temporarily pin the reusable workflow to a commit from before the Spotless checks were added: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 +uses: openremote/core/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 ``` Pinning the workflow also prevents the project from receiving other workflow changes made after that commit. Use this only as a temporary measure. @@ -650,7 +650,7 @@ When other custom-project template updates are also required, compare the existi Ensure the reusable workflow reference points to `master` before creating the first commit: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Commit the synchronized configuration and workflow change: diff --git a/versioned_docs/version-1.28.0/developer-guide/030-docker-compose-profiles.md b/versioned_docs/version-1.28.0/developer-guide/030-docker-compose-profiles.md index 2dd51e10..438b7965 100644 --- a/versioned_docs/version-1.28.0/developer-guide/030-docker-compose-profiles.md +++ b/versioned_docs/version-1.28.0/developer-guide/030-docker-compose-profiles.md @@ -10,7 +10,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.28.0/developer-guide/080-extensions.md b/versioned_docs/version-1.28.0/developer-guide/080-extensions.md index 2f0bfd79..e583d41d 100644 --- a/versioned_docs/version-1.28.0/developer-guide/080-extensions.md +++ b/versioned_docs/version-1.28.0/developer-guide/080-extensions.md @@ -38,4 +38,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/versioned_docs/version-1.28.0/developer-guide/100-system-administration.md b/versioned_docs/version-1.28.0/developer-guide/100-system-administration.md index 06e3f3fd..7797e10a 100644 --- a/versioned_docs/version-1.28.0/developer-guide/100-system-administration.md +++ b/versioned_docs/version-1.28.0/developer-guide/100-system-administration.md @@ -322,7 +322,7 @@ When executing the automation, AWS will perform several actions under the hood. - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -456,7 +456,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/versioned_docs/version-1.28.0/developer-guide/110-working-on-ui-and-apps.md b/versioned_docs/version-1.28.0/developer-guide/110-working-on-ui-and-apps.md index 2e76a10e..9e7a8281 100644 --- a/versioned_docs/version-1.28.0/developer-guide/110-working-on-ui-and-apps.md +++ b/versioned_docs/version-1.28.0/developer-guide/110-working-on-ui-and-apps.md @@ -1,7 +1,7 @@ # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -46,9 +46,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.28.0/user-guide/010-deploying/10-custom-deployment.md b/versioned_docs/version-1.28.0/user-guide/010-deploying/10-custom-deployment.md index efda80ee..9f8887c0 100644 --- a/versioned_docs/version-1.28.0/user-guide/010-deploying/10-custom-deployment.md +++ b/versioned_docs/version-1.28.0/user-guide/010-deploying/10-custom-deployment.md @@ -38,19 +38,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/050-agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/130-working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -58,7 +58,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.28.0/user-guide/010-deploying/30-aws-cloudformation.md b/versioned_docs/version-1.28.0/user-guide/010-deploying/30-aws-cloudformation.md index ca31739d..4c1e3ab3 100644 --- a/versioned_docs/version-1.28.0/user-guide/010-deploying/30-aws-cloudformation.md +++ b/versioned_docs/version-1.28.0/user-guide/010-deploying/30-aws-cloudformation.md @@ -1,6 +1,6 @@ # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.28.0/user-guide/010-deploying/40-aws-marketplace.md b/versioned_docs/version-1.28.0/user-guide/010-deploying/40-aws-marketplace.md index 8be63c5a..fb9e9136 100644 --- a/versioned_docs/version-1.28.0/user-guide/010-deploying/40-aws-marketplace.md +++ b/versioned_docs/version-1.28.0/user-guide/010-deploying/40-aws-marketplace.md @@ -1,7 +1,7 @@ # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -104,7 +104,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.28.0/user-guide/010-deploying/50-kubernetes.md b/versioned_docs/version-1.28.0/user-guide/010-deploying/50-kubernetes.md index de0fa48d..3c9d8c9e 100644 --- a/versioned_docs/version-1.28.0/user-guide/010-deploying/50-kubernetes.md +++ b/versioned_docs/version-1.28.0/user-guide/010-deploying/50-kubernetes.md @@ -3,9 +3,9 @@ In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.28.0/user-guide/010-deploying/80-release-management.md b/versioned_docs/version-1.28.0/user-guide/010-deploying/80-release-management.md index 1dcc8acc..59af5fc6 100644 --- a/versioned_docs/version-1.28.0/user-guide/010-deploying/80-release-management.md +++ b/versioned_docs/version-1.28.0/user-guide/010-deploying/80-release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.26.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremote` version in `gradle/libs.versions.toml` so this may not be needed] 2. Java code: Update the `openremote` version in the `gradle/libs.versions.toml` file @@ -116,6 +116,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.28.0/user-guide/020-manager-ui/10-manager-ui.md b/versioned_docs/version-1.28.0/user-guide/020-manager-ui/10-manager-ui.md index 2fff0f52..75b87003 100644 --- a/versioned_docs/version-1.28.0/user-guide/020-manager-ui/10-manager-ui.md +++ b/versioned_docs/version-1.28.0/user-guide/020-manager-ui/10-manager-ui.md @@ -4,7 +4,7 @@ slug: /user-guide/manager-ui/ # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../060-rules-and-forecasting/50-forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.28.0/user-guide/020-manager-ui/20-on-mobile.md b/versioned_docs/version-1.28.0/user-guide/020-manager-ui/20-on-mobile.md index 23f6ab04..8d361c77 100644 --- a/versioned_docs/version-1.28.0/user-guide/020-manager-ui/20-on-mobile.md +++ b/versioned_docs/version-1.28.0/user-guide/020-manager-ui/20-on-mobile.md @@ -10,7 +10,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.28.0/user-guide/020-manager-ui/30-appearance.md b/versioned_docs/version-1.28.0/user-guide/020-manager-ui/30-appearance.md index 7ef39014..0b2daa35 100644 --- a/versioned_docs/version-1.28.0/user-guide/020-manager-ui/30-appearance.md +++ b/versioned_docs/version-1.28.0/user-guide/020-manager-ui/30-appearance.md @@ -356,7 +356,7 @@ Exclude asset types from the 'Add asset' dialog. ``` #### Viewer Configuration -Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.28.0/user-guide/030-assets-agents-and-attributes.md b/versioned_docs/version-1.28.0/user-guide/030-assets-agents-and-attributes.md index 35148f05..a6938678 100644 --- a/versioned_docs/version-1.28.0/user-guide/030-assets-agents-and-attributes.md +++ b/versioned_docs/version-1.28.0/user-guide/030-assets-agents-and-attributes.md @@ -33,7 +33,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -62,7 +62,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -74,7 +74,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -87,4 +87,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/010-overview.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/010-overview.md index 38acc3b8..fe13fda0 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/010-overview.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/010-overview.md @@ -1,17 +1,17 @@ # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -30,18 +30,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -51,9 +51,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -76,7 +76,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -85,14 +85,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md index 526f3091..be036513 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md @@ -35,8 +35,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/050-http.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/050-http.md index 511dc579..6483b051 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/050-http.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/050-http.md @@ -7,10 +7,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -37,8 +37,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/060-knx.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/060-knx.md index 80148fc5..2f951b57 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/060-knx.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/060-knx.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/090-mqtt.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/090-mqtt.md index 18aacc8d..02e507e8 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/090-mqtt.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/090-mqtt.md @@ -23,7 +23,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -62,7 +62,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](./010-overview.md) - [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/100-simulator.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/100-simulator.md index a56aa2fd..308b043b 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/100-simulator.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/100-simulator.md @@ -11,9 +11,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/110-snmp.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/110-snmp.md index 997bfc23..50f651ad 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/110-snmp.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/110-snmp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/130-tcp.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/130-tcp.md index 404074a8..56cdf014 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/130-tcp.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/130-tcp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/150-udp.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/150-udp.md index 210806c2..c52aeade 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/150-udp.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/150-udp.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/160-velbus.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/160-velbus.md index e68b35a9..d6e3b7fd 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/160-velbus.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/160-velbus.md @@ -2,8 +2,8 @@ Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -12,8 +12,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -24,7 +24,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/170-websocket-agent.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/170-websocket-agent.md index 8771d0f8..82c700e7 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/170-websocket-agent.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/170-websocket-agent.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -21,4 +21,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md index b607473d..059ce9ab 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md @@ -6,7 +6,7 @@ ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -112,7 +112,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" index c5839d65..7139be28 100644 --- "a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" @@ -54,7 +54,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md index 94b0f5f8..772ac3e2 100644 --- a/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md +++ b/versioned_docs/version-1.28.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md @@ -249,7 +249,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.28.0/user-guide/050-manager-apis.md b/versioned_docs/version-1.28.0/user-guide/050-manager-apis.md index 10d9111c..9251063c 100644 --- a/versioned_docs/version-1.28.0/user-guide/050-manager-apis.md +++ b/versioned_docs/version-1.28.0/user-guide/050-manager-apis.md @@ -19,20 +19,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -51,7 +51,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -64,7 +64,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -82,7 +82,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -96,4 +96,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.28.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md b/versioned_docs/version-1.28.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md index 3c0d8f61..f1dd15d8 100644 --- a/versioned_docs/version-1.28.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md +++ b/versioned_docs/version-1.28.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md @@ -12,21 +12,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -59,7 +59,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -97,7 +97,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.28.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md b/versioned_docs/version-1.28.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md index 19826794..d94425dc 100644 --- a/versioned_docs/version-1.28.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md +++ b/versioned_docs/version-1.28.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md @@ -15,7 +15,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../050-manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/10-edge-gateway.md b/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/10-edge-gateway.md index e717f57c..24cd4fcc 100644 --- a/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/10-edge-gateway.md +++ b/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/10-edge-gateway.md @@ -38,7 +38,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md b/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md +++ b/versioned_docs/version-1.28.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.28.0/user-guide/090-domains/10-create-your-energy-management-system.md b/versioned_docs/version-1.28.0/user-guide/090-domains/10-create-your-energy-management-system.md index f44a015d..89cd4fa2 100644 --- a/versioned_docs/version-1.28.0/user-guide/090-domains/10-create-your-energy-management-system.md +++ b/versioned_docs/version-1.28.0/user-guide/090-domains/10-create-your-energy-management-system.md @@ -11,7 +11,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../010-deploying/10-custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../010-deploying/10-custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.29.0/10-introduction.md b/versioned_docs/version-1.29.0/10-introduction.md index ba4b9057..77f9e432 100644 --- a/versioned_docs/version-1.29.0/10-introduction.md +++ b/versioned_docs/version-1.29.0/10-introduction.md @@ -6,13 +6,13 @@ ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -26,7 +26,7 @@ The OpenRemote [Frontend](./developer-guide/110-working-on-ui-and-apps.md) simpl * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.29.0/20-quick-start.md b/versioned_docs/version-1.29.0/20-quick-start.md index 287c2146..8b913ce0 100644 --- a/versioned_docs/version-1.29.0/20-quick-start.md +++ b/versioned_docs/version-1.29.0/20-quick-start.md @@ -13,7 +13,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.29.0/architecture/10-overall-architecture.md b/versioned_docs/version-1.29.0/architecture/10-overall-architecture.md index 1ba90ac2..e617e16f 100644 --- a/versioned_docs/version-1.29.0/architecture/10-overall-architecture.md +++ b/versioned_docs/version-1.29.0/architecture/10-overall-architecture.md @@ -1,7 +1,7 @@ # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -47,7 +47,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -58,7 +58,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -66,14 +66,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.29.0/architecture/20-manager-endpoints-and-file-paths.md b/versioned_docs/version-1.29.0/architecture/20-manager-endpoints-and-file-paths.md index fe6050bf..9b777ac8 100644 --- a/versioned_docs/version-1.29.0/architecture/20-manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.29.0/architecture/20-manager-endpoints-and-file-paths.md @@ -30,11 +30,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.29.0/architecture/30-security.md b/versioned_docs/version-1.29.0/architecture/30-security.md index 6e4d6f6a..4a955b1a 100644 --- a/versioned_docs/version-1.29.0/architecture/30-security.md +++ b/versioned_docs/version-1.29.0/architecture/30-security.md @@ -1,7 +1,7 @@ # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.29.0/architecture/50-asset-location-tracking.md b/versioned_docs/version-1.29.0/architecture/50-asset-location-tracking.md index c00e4a15..48d1c0cb 100644 --- a/versioned_docs/version-1.29.0/architecture/50-asset-location-tracking.md +++ b/versioned_docs/version-1.29.0/architecture/50-asset-location-tracking.md @@ -60,7 +60,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.29.0/developer-guide/010-preparing-the-environment.md b/versioned_docs/version-1.29.0/developer-guide/010-preparing-the-environment.md index 56359240..af01d414 100644 --- a/versioned_docs/version-1.29.0/developer-guide/010-preparing-the-environment.md +++ b/versioned_docs/version-1.29.0/developer-guide/010-preparing-the-environment.md @@ -38,5 +38,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.29.0/developer-guide/020-setting-up-an-ide.md b/versioned_docs/version-1.29.0/developer-guide/020-setting-up-an-ide.md index 1c3b777f..a141dd02 100644 --- a/versioned_docs/version-1.29.0/developer-guide/020-setting-up-an-ide.md +++ b/versioned_docs/version-1.29.0/developer-guide/020-setting-up-an-ide.md @@ -41,7 +41,7 @@ For formatter plugins and IDE settings, see [Code formatting with Spotless](./02 ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.29.0/developer-guide/025-code-formatting.md b/versioned_docs/version-1.29.0/developer-guide/025-code-formatting.md index b7cbefff..c90fcc37 100644 --- a/versioned_docs/version-1.29.0/developer-guide/025-code-formatting.md +++ b/versioned_docs/version-1.29.0/developer-guide/025-code-formatting.md @@ -57,7 +57,7 @@ Review the resulting changes before committing them. Depending on the file type, ## Backend and UI tasks -Repositories that separate backend and UI sources, such as `openremote/openremote` and OpenRemote custom projects, provide additional task groups. +Repositories that separate backend and UI sources, such as `openremote/core` and OpenRemote custom projects, provide additional task groups. To check only backend or UI sources, run: @@ -148,7 +148,7 @@ The hook provides a useful local safeguard, but it does not replace the formatti ## UI linting and formatting with Yarn -Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/openremote` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). +Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/core` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). Run these commands from the repository root. @@ -525,14 +525,14 @@ Only add commits that are overwhelmingly mechanical, such as repository-wide for Pull requests created before the repository-wide formatting commit can produce many merge conflicts, even when their functional changes do not overlap. -For `openremote/openremote`, the relevant commits are: +For `openremote/core`, the relevant commits are: | Commit | Description | | ------------------------------------------ | -------------------------------------------------------- | | `d6941d97c96ad70e7a6b764a4a4a7682aa906c8a` | Last commit before the repository-wide formatting change | | `e3a066dcf739efe08d3d0e51e477d2d652dd28f8` | Apply Spotless across the repository | -The `master` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. +The `main` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. 1. Fetch the latest repository history: @@ -570,7 +570,7 @@ The `master` branch can be merged into the pull request in stages so that functi git commit ``` -6. Merge the latest `master` branch as usual: +6. Merge the latest `main` branch as usual: ```shell git merge origin/master @@ -590,10 +590,10 @@ Do not use the `-s ours` merge strategy either. It would record the formatting c ### Upgrading an existing custom project to Spotless -Custom projects commonly use the reusable CI/CD workflow from the `master` branch of `openremote/openremote`: +Custom projects commonly use the reusable CI/CD workflow from the `main` branch of `openremote/core`: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Because this follows `master`, new workflow behaviour is inherited automatically. This includes the Spotless formatting checks. @@ -603,7 +603,7 @@ Because this follows `master`, new workflow behaviour is inherited automatically When there is not yet time to upgrade a custom project, temporarily pin the reusable workflow to a commit from before the Spotless checks were added: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 +uses: openremote/core/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 ``` Pinning the workflow also prevents the project from receiving other workflow changes made after that commit. Use this only as a temporary measure. @@ -650,7 +650,7 @@ When other custom-project template updates are also required, compare the existi Ensure the reusable workflow reference points to `master` before creating the first commit: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Commit the synchronized configuration and workflow change: diff --git a/versioned_docs/version-1.29.0/developer-guide/030-docker-compose-profiles.md b/versioned_docs/version-1.29.0/developer-guide/030-docker-compose-profiles.md index 2dd51e10..438b7965 100644 --- a/versioned_docs/version-1.29.0/developer-guide/030-docker-compose-profiles.md +++ b/versioned_docs/version-1.29.0/developer-guide/030-docker-compose-profiles.md @@ -10,7 +10,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.29.0/developer-guide/080-extensions.md b/versioned_docs/version-1.29.0/developer-guide/080-extensions.md index 2f0bfd79..e583d41d 100644 --- a/versioned_docs/version-1.29.0/developer-guide/080-extensions.md +++ b/versioned_docs/version-1.29.0/developer-guide/080-extensions.md @@ -38,4 +38,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/versioned_docs/version-1.29.0/developer-guide/100-system-administration.md b/versioned_docs/version-1.29.0/developer-guide/100-system-administration.md index 06e3f3fd..7797e10a 100644 --- a/versioned_docs/version-1.29.0/developer-guide/100-system-administration.md +++ b/versioned_docs/version-1.29.0/developer-guide/100-system-administration.md @@ -322,7 +322,7 @@ When executing the automation, AWS will perform several actions under the hood. - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -456,7 +456,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/versioned_docs/version-1.29.0/developer-guide/110-working-on-ui-and-apps.md b/versioned_docs/version-1.29.0/developer-guide/110-working-on-ui-and-apps.md index 5e3ed330..42b93a70 100644 --- a/versioned_docs/version-1.29.0/developer-guide/110-working-on-ui-and-apps.md +++ b/versioned_docs/version-1.29.0/developer-guide/110-working-on-ui-and-apps.md @@ -1,7 +1,7 @@ # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -46,9 +46,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.29.0/user-guide/010-deploying/10-custom-deployment.md b/versioned_docs/version-1.29.0/user-guide/010-deploying/10-custom-deployment.md index efda80ee..9f8887c0 100644 --- a/versioned_docs/version-1.29.0/user-guide/010-deploying/10-custom-deployment.md +++ b/versioned_docs/version-1.29.0/user-guide/010-deploying/10-custom-deployment.md @@ -38,19 +38,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/050-agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/130-working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -58,7 +58,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.29.0/user-guide/010-deploying/30-aws-cloudformation.md b/versioned_docs/version-1.29.0/user-guide/010-deploying/30-aws-cloudformation.md index ca31739d..4c1e3ab3 100644 --- a/versioned_docs/version-1.29.0/user-guide/010-deploying/30-aws-cloudformation.md +++ b/versioned_docs/version-1.29.0/user-guide/010-deploying/30-aws-cloudformation.md @@ -1,6 +1,6 @@ # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.29.0/user-guide/010-deploying/40-aws-marketplace.md b/versioned_docs/version-1.29.0/user-guide/010-deploying/40-aws-marketplace.md index 8be63c5a..fb9e9136 100644 --- a/versioned_docs/version-1.29.0/user-guide/010-deploying/40-aws-marketplace.md +++ b/versioned_docs/version-1.29.0/user-guide/010-deploying/40-aws-marketplace.md @@ -1,7 +1,7 @@ # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -104,7 +104,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.29.0/user-guide/010-deploying/50-kubernetes.md b/versioned_docs/version-1.29.0/user-guide/010-deploying/50-kubernetes.md index de0fa48d..3c9d8c9e 100644 --- a/versioned_docs/version-1.29.0/user-guide/010-deploying/50-kubernetes.md +++ b/versioned_docs/version-1.29.0/user-guide/010-deploying/50-kubernetes.md @@ -3,9 +3,9 @@ In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.29.0/user-guide/010-deploying/80-release-management.md b/versioned_docs/version-1.29.0/user-guide/010-deploying/80-release-management.md index 1dcc8acc..59af5fc6 100644 --- a/versioned_docs/version-1.29.0/user-guide/010-deploying/80-release-management.md +++ b/versioned_docs/version-1.29.0/user-guide/010-deploying/80-release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.26.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremote` version in `gradle/libs.versions.toml` so this may not be needed] 2. Java code: Update the `openremote` version in the `gradle/libs.versions.toml` file @@ -116,6 +116,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.29.0/user-guide/020-manager-ui/10-manager-ui.md b/versioned_docs/version-1.29.0/user-guide/020-manager-ui/10-manager-ui.md index c174c4ac..6d2b02ba 100644 --- a/versioned_docs/version-1.29.0/user-guide/020-manager-ui/10-manager-ui.md +++ b/versioned_docs/version-1.29.0/user-guide/020-manager-ui/10-manager-ui.md @@ -4,7 +4,7 @@ slug: /user-guide/manager-ui/ # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../060-rules-and-forecasting/50-forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.29.0/user-guide/020-manager-ui/20-on-mobile.md b/versioned_docs/version-1.29.0/user-guide/020-manager-ui/20-on-mobile.md index 23f6ab04..8d361c77 100644 --- a/versioned_docs/version-1.29.0/user-guide/020-manager-ui/20-on-mobile.md +++ b/versioned_docs/version-1.29.0/user-guide/020-manager-ui/20-on-mobile.md @@ -10,7 +10,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.29.0/user-guide/020-manager-ui/30-appearance.md b/versioned_docs/version-1.29.0/user-guide/020-manager-ui/30-appearance.md index 8257d948..4c726433 100644 --- a/versioned_docs/version-1.29.0/user-guide/020-manager-ui/30-appearance.md +++ b/versioned_docs/version-1.29.0/user-guide/020-manager-ui/30-appearance.md @@ -356,7 +356,7 @@ Exclude asset types from the 'Add asset' dialog. ``` #### Viewer Configuration -Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.29.0/user-guide/030-assets-agents-and-attributes.md b/versioned_docs/version-1.29.0/user-guide/030-assets-agents-and-attributes.md index 35148f05..a6938678 100644 --- a/versioned_docs/version-1.29.0/user-guide/030-assets-agents-and-attributes.md +++ b/versioned_docs/version-1.29.0/user-guide/030-assets-agents-and-attributes.md @@ -33,7 +33,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -62,7 +62,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -74,7 +74,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -87,4 +87,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/010-overview.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/010-overview.md index 38acc3b8..fe13fda0 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/010-overview.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/010-overview.md @@ -1,17 +1,17 @@ # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -30,18 +30,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -51,9 +51,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -76,7 +76,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -85,14 +85,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md index 526f3091..be036513 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md @@ -35,8 +35,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/050-http.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/050-http.md index 511dc579..6483b051 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/050-http.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/050-http.md @@ -7,10 +7,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -37,8 +37,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/060-knx.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/060-knx.md index 80148fc5..2f951b57 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/060-knx.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/060-knx.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/090-mqtt.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/090-mqtt.md index 18aacc8d..02e507e8 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/090-mqtt.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/090-mqtt.md @@ -23,7 +23,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -62,7 +62,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](./010-overview.md) - [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/100-simulator.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/100-simulator.md index a56aa2fd..308b043b 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/100-simulator.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/100-simulator.md @@ -11,9 +11,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/110-snmp.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/110-snmp.md index 997bfc23..50f651ad 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/110-snmp.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/110-snmp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/130-tcp.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/130-tcp.md index 404074a8..56cdf014 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/130-tcp.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/130-tcp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/150-udp.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/150-udp.md index 210806c2..c52aeade 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/150-udp.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/150-udp.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/160-velbus.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/160-velbus.md index e68b35a9..d6e3b7fd 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/160-velbus.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/160-velbus.md @@ -2,8 +2,8 @@ Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -12,8 +12,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -24,7 +24,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/170-websocket-agent.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/170-websocket-agent.md index 8771d0f8..82c700e7 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/170-websocket-agent.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/170-websocket-agent.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -21,4 +21,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md index 36166cf0..98acc692 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md @@ -6,7 +6,7 @@ ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -112,7 +112,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" index c5839d65..7139be28 100644 --- "a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" @@ -54,7 +54,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md index 94b0f5f8..772ac3e2 100644 --- a/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md +++ b/versioned_docs/version-1.29.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md @@ -249,7 +249,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.29.0/user-guide/050-manager-apis.md b/versioned_docs/version-1.29.0/user-guide/050-manager-apis.md index 10d9111c..9251063c 100644 --- a/versioned_docs/version-1.29.0/user-guide/050-manager-apis.md +++ b/versioned_docs/version-1.29.0/user-guide/050-manager-apis.md @@ -19,20 +19,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -51,7 +51,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -64,7 +64,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -82,7 +82,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -96,4 +96,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.29.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md b/versioned_docs/version-1.29.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md index 3c0d8f61..f1dd15d8 100644 --- a/versioned_docs/version-1.29.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md +++ b/versioned_docs/version-1.29.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md @@ -12,21 +12,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -59,7 +59,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -97,7 +97,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.29.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md b/versioned_docs/version-1.29.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md index 03c222e8..338f2e7d 100644 --- a/versioned_docs/version-1.29.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md +++ b/versioned_docs/version-1.29.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md @@ -15,7 +15,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../050-manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/10-edge-gateway.md b/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/10-edge-gateway.md index e717f57c..24cd4fcc 100644 --- a/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/10-edge-gateway.md +++ b/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/10-edge-gateway.md @@ -38,7 +38,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md b/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md +++ b/versioned_docs/version-1.29.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.29.0/user-guide/090-domains/10-create-your-energy-management-system.md b/versioned_docs/version-1.29.0/user-guide/090-domains/10-create-your-energy-management-system.md index f44a015d..89cd4fa2 100644 --- a/versioned_docs/version-1.29.0/user-guide/090-domains/10-create-your-energy-management-system.md +++ b/versioned_docs/version-1.29.0/user-guide/090-domains/10-create-your-energy-management-system.md @@ -11,7 +11,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../010-deploying/10-custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../010-deploying/10-custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.3.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.3.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.3.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.3.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.3.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.3.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.3.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.3.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.3.0/architecture/security.md b/versioned_docs/version-1.3.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.3.0/architecture/security.md +++ b/versioned_docs/version-1.3.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.3.0/developer-guide/data-migration.md b/versioned_docs/version-1.3.0/developer-guide/data-migration.md index 374cc988..9c30150c 100644 --- a/versioned_docs/version-1.3.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.3.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.3.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.3.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.3.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.3.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.3.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.3.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.3.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.3.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.3.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.3.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.3.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.3.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.3.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.3.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.3.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.3.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.3.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.3.0/developer-guide/working-on-ui-and-apps.md index 77b51325..ab41e043 100644 --- a/versioned_docs/version-1.3.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.3.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -53,9 +53,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.3.0/introduction.md b/versioned_docs/version-1.3.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.3.0/introduction.md +++ b/versioned_docs/version-1.3.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.3.0/quick-start.md b/versioned_docs/version-1.3.0/quick-start.md index 8d73c3dc..250eb4ab 100644 --- a/versioned_docs/version-1.3.0/quick-start.md +++ b/versioned_docs/version-1.3.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/mqtt.md index 3d477120..a1fe216a 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/mqtt.md @@ -63,7 +63,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/overview.md index dec12a76..cf236f61 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/simulator.md index 5a5535f3..62ef56a6 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/simulator.md @@ -17,7 +17,7 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/snmp.md index 10a83a8d..559f9686 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/tcp.md index 690265fc..f83b03fa 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/udp.md index ab984d61..e64f3215 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/velbus.md index c0d353d2..465b983b 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 13 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.3.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.3.0/user-guide/agents-protocols/websocket-agent.md index f04908c6..2b38f68a 100644 --- a/versioned_docs/version-1.3.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.3.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.3.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.3.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.3.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.3.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.3.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.3.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.3.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.3.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.3.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.3.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.3.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.3.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.3.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.3.0/user-guide/deploying/custom-deployment.md index 0272850c..2655f56c 100644 --- a/versioned_docs/version-1.3.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.3.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.3.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.3.0/user-guide/deploying/release-management.md index a7d95f63..2d843ca1 100644 --- a/versioned_docs/version-1.3.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.3.0/user-guide/deploying/release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -116,5 +116,5 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory * openremote/console-ios: The CocoaPod "version" in the `ORLib/ORLib.podspec` file diff --git a/versioned_docs/version-1.3.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.3.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.3.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.3.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.3.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.3.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.3.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.3.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.3.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.3.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.3.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.3.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.3.0/user-guide/manager-apis.md b/versioned_docs/version-1.3.0/user-guide/manager-apis.md index 4598ff23..b62569a2 100644 --- a/versioned_docs/version-1.3.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.3.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -99,4 +99,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access to the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.3.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.3.0/user-guide/manager-ui/manager-ui.md index 453992e8..77c3fc83 100644 --- a/versioned_docs/version-1.3.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.3.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.3.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.3.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.3.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.3.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.3.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.3.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.3.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.3.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.30.0/10-introduction.md b/versioned_docs/version-1.30.0/10-introduction.md index ba4b9057..77f9e432 100644 --- a/versioned_docs/version-1.30.0/10-introduction.md +++ b/versioned_docs/version-1.30.0/10-introduction.md @@ -6,13 +6,13 @@ ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -26,7 +26,7 @@ The OpenRemote [Frontend](./developer-guide/110-working-on-ui-and-apps.md) simpl * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.30.0/20-quick-start.md b/versioned_docs/version-1.30.0/20-quick-start.md index 287c2146..8b913ce0 100644 --- a/versioned_docs/version-1.30.0/20-quick-start.md +++ b/versioned_docs/version-1.30.0/20-quick-start.md @@ -13,7 +13,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.30.0/architecture/10-overall-architecture.md b/versioned_docs/version-1.30.0/architecture/10-overall-architecture.md index 1ba90ac2..e617e16f 100644 --- a/versioned_docs/version-1.30.0/architecture/10-overall-architecture.md +++ b/versioned_docs/version-1.30.0/architecture/10-overall-architecture.md @@ -1,7 +1,7 @@ # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -47,7 +47,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -58,7 +58,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -66,14 +66,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.30.0/architecture/20-manager-endpoints-and-file-paths.md b/versioned_docs/version-1.30.0/architecture/20-manager-endpoints-and-file-paths.md index fe6050bf..9b777ac8 100644 --- a/versioned_docs/version-1.30.0/architecture/20-manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.30.0/architecture/20-manager-endpoints-and-file-paths.md @@ -30,11 +30,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.30.0/architecture/30-security.md b/versioned_docs/version-1.30.0/architecture/30-security.md index 6e4d6f6a..4a955b1a 100644 --- a/versioned_docs/version-1.30.0/architecture/30-security.md +++ b/versioned_docs/version-1.30.0/architecture/30-security.md @@ -1,7 +1,7 @@ # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.30.0/architecture/50-asset-location-tracking.md b/versioned_docs/version-1.30.0/architecture/50-asset-location-tracking.md index c00e4a15..48d1c0cb 100644 --- a/versioned_docs/version-1.30.0/architecture/50-asset-location-tracking.md +++ b/versioned_docs/version-1.30.0/architecture/50-asset-location-tracking.md @@ -60,7 +60,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.30.0/developer-guide/010-preparing-the-environment.md b/versioned_docs/version-1.30.0/developer-guide/010-preparing-the-environment.md index 44e678b5..35f00695 100644 --- a/versioned_docs/version-1.30.0/developer-guide/010-preparing-the-environment.md +++ b/versioned_docs/version-1.30.0/developer-guide/010-preparing-the-environment.md @@ -38,5 +38,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.30.0/developer-guide/020-setting-up-an-ide.md b/versioned_docs/version-1.30.0/developer-guide/020-setting-up-an-ide.md index 1c3b777f..a141dd02 100644 --- a/versioned_docs/version-1.30.0/developer-guide/020-setting-up-an-ide.md +++ b/versioned_docs/version-1.30.0/developer-guide/020-setting-up-an-ide.md @@ -41,7 +41,7 @@ For formatter plugins and IDE settings, see [Code formatting with Spotless](./02 ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.30.0/developer-guide/025-code-formatting.md b/versioned_docs/version-1.30.0/developer-guide/025-code-formatting.md index b7cbefff..c90fcc37 100644 --- a/versioned_docs/version-1.30.0/developer-guide/025-code-formatting.md +++ b/versioned_docs/version-1.30.0/developer-guide/025-code-formatting.md @@ -57,7 +57,7 @@ Review the resulting changes before committing them. Depending on the file type, ## Backend and UI tasks -Repositories that separate backend and UI sources, such as `openremote/openremote` and OpenRemote custom projects, provide additional task groups. +Repositories that separate backend and UI sources, such as `openremote/core` and OpenRemote custom projects, provide additional task groups. To check only backend or UI sources, run: @@ -148,7 +148,7 @@ The hook provides a useful local safeguard, but it does not replace the formatti ## UI linting and formatting with Yarn -Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/openremote` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). +Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/core` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). Run these commands from the repository root. @@ -525,14 +525,14 @@ Only add commits that are overwhelmingly mechanical, such as repository-wide for Pull requests created before the repository-wide formatting commit can produce many merge conflicts, even when their functional changes do not overlap. -For `openremote/openremote`, the relevant commits are: +For `openremote/core`, the relevant commits are: | Commit | Description | | ------------------------------------------ | -------------------------------------------------------- | | `d6941d97c96ad70e7a6b764a4a4a7682aa906c8a` | Last commit before the repository-wide formatting change | | `e3a066dcf739efe08d3d0e51e477d2d652dd28f8` | Apply Spotless across the repository | -The `master` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. +The `main` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. 1. Fetch the latest repository history: @@ -570,7 +570,7 @@ The `master` branch can be merged into the pull request in stages so that functi git commit ``` -6. Merge the latest `master` branch as usual: +6. Merge the latest `main` branch as usual: ```shell git merge origin/master @@ -590,10 +590,10 @@ Do not use the `-s ours` merge strategy either. It would record the formatting c ### Upgrading an existing custom project to Spotless -Custom projects commonly use the reusable CI/CD workflow from the `master` branch of `openremote/openremote`: +Custom projects commonly use the reusable CI/CD workflow from the `main` branch of `openremote/core`: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Because this follows `master`, new workflow behaviour is inherited automatically. This includes the Spotless formatting checks. @@ -603,7 +603,7 @@ Because this follows `master`, new workflow behaviour is inherited automatically When there is not yet time to upgrade a custom project, temporarily pin the reusable workflow to a commit from before the Spotless checks were added: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 +uses: openremote/core/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 ``` Pinning the workflow also prevents the project from receiving other workflow changes made after that commit. Use this only as a temporary measure. @@ -650,7 +650,7 @@ When other custom-project template updates are also required, compare the existi Ensure the reusable workflow reference points to `master` before creating the first commit: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Commit the synchronized configuration and workflow change: diff --git a/versioned_docs/version-1.30.0/developer-guide/030-docker-compose-profiles.md b/versioned_docs/version-1.30.0/developer-guide/030-docker-compose-profiles.md index 2dd51e10..438b7965 100644 --- a/versioned_docs/version-1.30.0/developer-guide/030-docker-compose-profiles.md +++ b/versioned_docs/version-1.30.0/developer-guide/030-docker-compose-profiles.md @@ -10,7 +10,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.30.0/developer-guide/080-extensions.md b/versioned_docs/version-1.30.0/developer-guide/080-extensions.md index 2f0bfd79..e583d41d 100644 --- a/versioned_docs/version-1.30.0/developer-guide/080-extensions.md +++ b/versioned_docs/version-1.30.0/developer-guide/080-extensions.md @@ -38,4 +38,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/versioned_docs/version-1.30.0/developer-guide/100-system-administration.md b/versioned_docs/version-1.30.0/developer-guide/100-system-administration.md index 06e3f3fd..7797e10a 100644 --- a/versioned_docs/version-1.30.0/developer-guide/100-system-administration.md +++ b/versioned_docs/version-1.30.0/developer-guide/100-system-administration.md @@ -322,7 +322,7 @@ When executing the automation, AWS will perform several actions under the hood. - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -456,7 +456,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/versioned_docs/version-1.30.0/developer-guide/110-working-on-ui-and-apps.md b/versioned_docs/version-1.30.0/developer-guide/110-working-on-ui-and-apps.md index 5e3ed330..42b93a70 100644 --- a/versioned_docs/version-1.30.0/developer-guide/110-working-on-ui-and-apps.md +++ b/versioned_docs/version-1.30.0/developer-guide/110-working-on-ui-and-apps.md @@ -1,7 +1,7 @@ # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -46,9 +46,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.30.0/user-guide/010-deploying/10-custom-deployment.md b/versioned_docs/version-1.30.0/user-guide/010-deploying/10-custom-deployment.md index efda80ee..9f8887c0 100644 --- a/versioned_docs/version-1.30.0/user-guide/010-deploying/10-custom-deployment.md +++ b/versioned_docs/version-1.30.0/user-guide/010-deploying/10-custom-deployment.md @@ -38,19 +38,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/050-agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/130-working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -58,7 +58,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.30.0/user-guide/010-deploying/30-aws-cloudformation.md b/versioned_docs/version-1.30.0/user-guide/010-deploying/30-aws-cloudformation.md index ca31739d..4c1e3ab3 100644 --- a/versioned_docs/version-1.30.0/user-guide/010-deploying/30-aws-cloudformation.md +++ b/versioned_docs/version-1.30.0/user-guide/010-deploying/30-aws-cloudformation.md @@ -1,6 +1,6 @@ # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.30.0/user-guide/010-deploying/40-aws-marketplace.md b/versioned_docs/version-1.30.0/user-guide/010-deploying/40-aws-marketplace.md index 8be63c5a..fb9e9136 100644 --- a/versioned_docs/version-1.30.0/user-guide/010-deploying/40-aws-marketplace.md +++ b/versioned_docs/version-1.30.0/user-guide/010-deploying/40-aws-marketplace.md @@ -1,7 +1,7 @@ # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -104,7 +104,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.30.0/user-guide/010-deploying/50-kubernetes.md b/versioned_docs/version-1.30.0/user-guide/010-deploying/50-kubernetes.md index de0fa48d..3c9d8c9e 100644 --- a/versioned_docs/version-1.30.0/user-guide/010-deploying/50-kubernetes.md +++ b/versioned_docs/version-1.30.0/user-guide/010-deploying/50-kubernetes.md @@ -3,9 +3,9 @@ In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.30.0/user-guide/010-deploying/80-release-management.md b/versioned_docs/version-1.30.0/user-guide/010-deploying/80-release-management.md index 1dcc8acc..59af5fc6 100644 --- a/versioned_docs/version-1.30.0/user-guide/010-deploying/80-release-management.md +++ b/versioned_docs/version-1.30.0/user-guide/010-deploying/80-release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.26.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremote` version in `gradle/libs.versions.toml` so this may not be needed] 2. Java code: Update the `openremote` version in the `gradle/libs.versions.toml` file @@ -116,6 +116,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.30.0/user-guide/020-manager-ui/10-manager-ui.md b/versioned_docs/version-1.30.0/user-guide/020-manager-ui/10-manager-ui.md index c174c4ac..6d2b02ba 100644 --- a/versioned_docs/version-1.30.0/user-guide/020-manager-ui/10-manager-ui.md +++ b/versioned_docs/version-1.30.0/user-guide/020-manager-ui/10-manager-ui.md @@ -4,7 +4,7 @@ slug: /user-guide/manager-ui/ # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../060-rules-and-forecasting/50-forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.30.0/user-guide/020-manager-ui/20-on-mobile.md b/versioned_docs/version-1.30.0/user-guide/020-manager-ui/20-on-mobile.md index 23f6ab04..8d361c77 100644 --- a/versioned_docs/version-1.30.0/user-guide/020-manager-ui/20-on-mobile.md +++ b/versioned_docs/version-1.30.0/user-guide/020-manager-ui/20-on-mobile.md @@ -10,7 +10,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.30.0/user-guide/020-manager-ui/30-appearance.md b/versioned_docs/version-1.30.0/user-guide/020-manager-ui/30-appearance.md index abbe0443..290af1ef 100644 --- a/versioned_docs/version-1.30.0/user-guide/020-manager-ui/30-appearance.md +++ b/versioned_docs/version-1.30.0/user-guide/020-manager-ui/30-appearance.md @@ -356,7 +356,7 @@ Exclude asset types from the 'Add asset' dialog. ``` #### Viewer Configuration -Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.30.0/user-guide/030-assets-agents-and-attributes.md b/versioned_docs/version-1.30.0/user-guide/030-assets-agents-and-attributes.md index 35148f05..a6938678 100644 --- a/versioned_docs/version-1.30.0/user-guide/030-assets-agents-and-attributes.md +++ b/versioned_docs/version-1.30.0/user-guide/030-assets-agents-and-attributes.md @@ -33,7 +33,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -62,7 +62,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -74,7 +74,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -87,4 +87,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/010-overview.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/010-overview.md index 38acc3b8..fe13fda0 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/010-overview.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/010-overview.md @@ -1,17 +1,17 @@ # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -30,18 +30,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -51,9 +51,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -76,7 +76,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -85,14 +85,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md index 526f3091..be036513 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md @@ -35,8 +35,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/050-http.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/050-http.md index 511dc579..6483b051 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/050-http.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/050-http.md @@ -7,10 +7,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -37,8 +37,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/060-knx.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/060-knx.md index 80148fc5..2f951b57 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/060-knx.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/060-knx.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/090-mqtt.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/090-mqtt.md index 18aacc8d..02e507e8 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/090-mqtt.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/090-mqtt.md @@ -23,7 +23,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -62,7 +62,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](./010-overview.md) - [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/100-simulator.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/100-simulator.md index a56aa2fd..308b043b 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/100-simulator.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/100-simulator.md @@ -11,9 +11,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/110-snmp.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/110-snmp.md index 997bfc23..50f651ad 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/110-snmp.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/110-snmp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/130-tcp.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/130-tcp.md index 404074a8..56cdf014 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/130-tcp.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/130-tcp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/150-udp.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/150-udp.md index 210806c2..c52aeade 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/150-udp.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/150-udp.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/160-velbus.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/160-velbus.md index e68b35a9..d6e3b7fd 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/160-velbus.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/160-velbus.md @@ -2,8 +2,8 @@ Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -12,8 +12,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -24,7 +24,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/170-websocket-agent.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/170-websocket-agent.md index 8771d0f8..82c700e7 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/170-websocket-agent.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/170-websocket-agent.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -21,4 +21,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md index 36166cf0..98acc692 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md @@ -6,7 +6,7 @@ ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -112,7 +112,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" index c5839d65..7139be28 100644 --- "a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" @@ -54,7 +54,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md index 94b0f5f8..772ac3e2 100644 --- a/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md +++ b/versioned_docs/version-1.30.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md @@ -249,7 +249,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.30.0/user-guide/050-manager-apis.md b/versioned_docs/version-1.30.0/user-guide/050-manager-apis.md index 10d9111c..9251063c 100644 --- a/versioned_docs/version-1.30.0/user-guide/050-manager-apis.md +++ b/versioned_docs/version-1.30.0/user-guide/050-manager-apis.md @@ -19,20 +19,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -51,7 +51,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -64,7 +64,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -82,7 +82,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -96,4 +96,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.30.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md b/versioned_docs/version-1.30.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md index 3c0d8f61..f1dd15d8 100644 --- a/versioned_docs/version-1.30.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md +++ b/versioned_docs/version-1.30.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md @@ -12,21 +12,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -59,7 +59,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -97,7 +97,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.30.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md b/versioned_docs/version-1.30.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md index 03c222e8..338f2e7d 100644 --- a/versioned_docs/version-1.30.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md +++ b/versioned_docs/version-1.30.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md @@ -15,7 +15,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../050-manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/10-edge-gateway.md b/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/10-edge-gateway.md index e717f57c..24cd4fcc 100644 --- a/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/10-edge-gateway.md +++ b/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/10-edge-gateway.md @@ -38,7 +38,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md b/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md +++ b/versioned_docs/version-1.30.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.30.0/user-guide/090-domains/10-create-your-energy-management-system.md b/versioned_docs/version-1.30.0/user-guide/090-domains/10-create-your-energy-management-system.md index f44a015d..89cd4fa2 100644 --- a/versioned_docs/version-1.30.0/user-guide/090-domains/10-create-your-energy-management-system.md +++ b/versioned_docs/version-1.30.0/user-guide/090-domains/10-create-your-energy-management-system.md @@ -11,7 +11,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../010-deploying/10-custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../010-deploying/10-custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.31.0/10-introduction.md b/versioned_docs/version-1.31.0/10-introduction.md index ba4b9057..77f9e432 100644 --- a/versioned_docs/version-1.31.0/10-introduction.md +++ b/versioned_docs/version-1.31.0/10-introduction.md @@ -6,13 +6,13 @@ ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Vehicle, Battery, Streetlight, and Sensor assets to model an IoT system for a smart city, an energy management system, or fleet telematics. Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices. -The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. +The [Manager UI](https://github.com/openremote/core/tree/main/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager. The manager provides APIs for monitoring and administrating the system: @@ -26,7 +26,7 @@ The OpenRemote [Frontend](./developer-guide/110-working-on-ui-and-apps.md) simpl * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.31.0/20-quick-start.md b/versioned_docs/version-1.31.0/20-quick-start.md index 287c2146..8b913ce0 100644 --- a/versioned_docs/version-1.31.0/20-quick-start.md +++ b/versioned_docs/version-1.31.0/20-quick-start.md @@ -13,7 +13,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.31.0/architecture/10-overall-architecture.md b/versioned_docs/version-1.31.0/architecture/10-overall-architecture.md index 1ba90ac2..e617e16f 100644 --- a/versioned_docs/version-1.31.0/architecture/10-overall-architecture.md +++ b/versioned_docs/version-1.31.0/architecture/10-overall-architecture.md @@ -1,7 +1,7 @@ # Overall architecture At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch. -Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) +Those services are defined in [manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService](https://github.com/openremote/core/blob/main/manager/src/main/resources/META-INF/services/org.openremote.model.ContainerService) A service is a component whose lifecycle is managed by the Container, and that provides some functionality. All services implement the [ContainerService](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/ContainerService.html) interface. @@ -47,7 +47,7 @@ See [Manager APIs](https://docs.openremote.io/docs/user-guide/manager-apis/) for ##### Via publishing on MQTT topics Clients can post on `writeattributevalue` or `writeattribute` topics. -This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). +This is handled in [DefaultMQTTHandler.onPublish()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/mqtt/DefaultMQTTHandler.java#L342). ##### Via REST API @@ -58,7 +58,7 @@ Several endpoints allow to add or update one or more attributes. [Update attribute values](https://docs.openremote.io/docs/rest-api/write-attribute-values) - `PUT attributes` [Update attribute values with timestamps](https://docs.openremote.io/docs/rest-api/write-attribute-events) - `PUT attributes/timestamp` -All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). +All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetResourceImpl.java#L580). ##### Via WebSocket API @@ -66,14 +66,14 @@ All above end up being handled by [AssetResourceImpl.doAttributeWrite()](https:/ #### From inside the system -[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. +[AssetProcessingService.sendAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L317) can be used by any component in the system to post an [AttributeEvent](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/attribute/AttributeEvent.html) for processing. ### Events processing Regardless of how events enter the system, they are handled through a Camel Direct component with URI "direct://AttributeEventProcessor". This is wired to the [AssetProcessingService](https://www.javadoc.io/doc/io.openremote/openremote-manager/latest/org/openremote/manager/asset/AssetProcessingService.html), that manages the processing chain all those events go through. -[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/openremote/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. +[AssetProcessingService.processAttributeEvent()](https://github.com/openremote/core/blob/151af17d0e502f0fa7a377cd34b8416350bc1794/manager/src/main/java/org/openremote/manager/asset/AssetProcessingService.java#L341) is really where all processing happens. A lock is immediately taken on the asset (assetId based) and during this lock: - [Asset](https://www.javadoc.io/doc/io.openremote/openremote-model/latest/org/openremote/model/asset/Asset.html) is retrieved from DB diff --git a/versioned_docs/version-1.31.0/architecture/20-manager-endpoints-and-file-paths.md b/versioned_docs/version-1.31.0/architecture/20-manager-endpoints-and-file-paths.md index fe6050bf..9b777ac8 100644 --- a/versioned_docs/version-1.31.0/architecture/20-manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.31.0/architecture/20-manager-endpoints-and-file-paths.md @@ -30,11 +30,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.31.0/architecture/30-security.md b/versioned_docs/version-1.31.0/architecture/30-security.md index 6e4d6f6a..4a955b1a 100644 --- a/versioned_docs/version-1.31.0/architecture/30-security.md +++ b/versioned_docs/version-1.31.0/architecture/30-security.md @@ -1,7 +1,7 @@ # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.31.0/architecture/50-asset-location-tracking.md b/versioned_docs/version-1.31.0/architecture/50-asset-location-tracking.md index c00e4a15..48d1c0cb 100644 --- a/versioned_docs/version-1.31.0/architecture/50-asset-location-tracking.md +++ b/versioned_docs/version-1.31.0/architecture/50-asset-location-tracking.md @@ -60,7 +60,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.31.0/developer-guide/010-preparing-the-environment.md b/versioned_docs/version-1.31.0/developer-guide/010-preparing-the-environment.md index 44e678b5..35f00695 100644 --- a/versioned_docs/version-1.31.0/developer-guide/010-preparing-the-environment.md +++ b/versioned_docs/version-1.31.0/developer-guide/010-preparing-the-environment.md @@ -38,5 +38,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.31.0/developer-guide/020-setting-up-an-ide.md b/versioned_docs/version-1.31.0/developer-guide/020-setting-up-an-ide.md index 1c3b777f..a141dd02 100644 --- a/versioned_docs/version-1.31.0/developer-guide/020-setting-up-an-ide.md +++ b/versioned_docs/version-1.31.0/developer-guide/020-setting-up-an-ide.md @@ -41,7 +41,7 @@ For formatter plugins and IDE settings, see [Code formatting with Spotless](./02 ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.31.0/developer-guide/025-code-formatting.md b/versioned_docs/version-1.31.0/developer-guide/025-code-formatting.md index cbf5d625..6c139ed3 100644 --- a/versioned_docs/version-1.31.0/developer-guide/025-code-formatting.md +++ b/versioned_docs/version-1.31.0/developer-guide/025-code-formatting.md @@ -57,7 +57,7 @@ Review the resulting changes before committing them. Depending on the file type, ## Backend and UI tasks -Repositories that separate backend and UI sources, such as `openremote/openremote` and OpenRemote custom projects, provide additional task groups. +Repositories that separate backend and UI sources, such as `openremote/core` and OpenRemote custom projects, provide additional task groups. To check only backend or UI sources, run: @@ -148,7 +148,7 @@ The hook provides a useful local safeguard, but it does not replace the formatti ## UI linting and formatting with Yarn -Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/openremote` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). +Projects with a UI and corresponding scripts in their root `package.json`, such as `openremote/core` and OpenRemote custom projects, can also run [ESLint](https://eslint.org/) and [Prettier](https://prettier.io/) directly with [Yarn](https://yarnpkg.com/). Run these commands from the repository root. @@ -525,16 +525,16 @@ Only add commits that are overwhelmingly mechanical, such as repository-wide for Pull requests created before the repository-wide formatting commits can produce many merge conflicts, even when their functional changes do not overlap. -For `openremote/openremote`, the relevant commits are: +For `openremote/core`, the relevant commits are: | Commit | Description | |----------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| -| [`d6941d97c96ad70e7a6b764a4a4a7682aa906c8a`](https://github.com/openremote/openremote/commit/d6941d97c96ad70e7a6b764a4a4a7682aa906c8a) | Last commit before the repository-wide formatting change | -| [`e3a066dcf739efe08d3d0e51e477d2d652dd28f8`](https://github.com/openremote/openremote/commit/e3a066dcf739efe08d3d0e51e477d2d652dd28f8) | Apply Spotless across the repository | -| [`5312a1199b0e1cc6daaa46c9b20f2d71a6755246`](https://github.com/openremote/openremote/commit/5312a1199b0e1cc6daaa46c9b20f2d71a6755246) | Enable Spotless formatting for Groovy files | -| [`db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2`](https://github.com/openremote/openremote/commit/db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2) | Apply repository-wide Spotless formatting to Groovy files | +| [`d6941d97c96ad70e7a6b764a4a4a7682aa906c8a`](https://github.com/openremote/core/commit/d6941d97c96ad70e7a6b764a4a4a7682aa906c8a) | Last commit before the repository-wide formatting change | +| [`e3a066dcf739efe08d3d0e51e477d2d652dd28f8`](https://github.com/openremote/core/commit/e3a066dcf739efe08d3d0e51e477d2d652dd28f8) | Apply Spotless across the repository | +| [`5312a1199b0e1cc6daaa46c9b20f2d71a6755246`](https://github.com/openremote/core/commit/5312a1199b0e1cc6daaa46c9b20f2d71a6755246) | Enable Spotless formatting for Groovy files | +| [`db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2`](https://github.com/openremote/core/commit/db6a1ef6c7bee92ffd6d1855d0aa057f56a028c2) | Apply repository-wide Spotless formatting to Groovy files | -The `master` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. +The `main` branch can be merged into the pull request in stages so that functional changes are handled separately from the generated formatting changes. 1. Fetch the latest repository history: @@ -595,7 +595,7 @@ The `master` branch can be merged into the pull request in stages so that functi git commit ``` -8. Merge the latest `master` branch as usual: +8. Merge the latest `main` branch as usual: ```shell git merge origin/master @@ -615,10 +615,10 @@ Do not use the `-s ours` merge strategy either. It would record a formatting com ### Upgrading an existing custom project to Spotless -Custom projects commonly use the reusable CI/CD workflow from the `master` branch of `openremote/openremote`: +Custom projects commonly use the reusable CI/CD workflow from the `main` branch of `openremote/core`: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Because this follows `master`, new workflow behaviour is inherited automatically. This includes the Spotless formatting checks. @@ -628,12 +628,12 @@ Because this follows `master`, new workflow behaviour is inherited automatically When there is not yet time to upgrade a custom project, temporarily pin the reusable workflow to a commit from before the Spotless checks were added: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 +uses: openremote/core/.github/workflows/ci_cd.yml@51f4c3c0c8edd429a65237268d47d615617d4008 ``` Pinning the workflow also prevents the project from receiving other workflow changes made after that commit. Use this only as a temporary measure. -The pinned SHA is the [`51f4c3c0c8edd429a65237268d47d615617d4008`](https://github.com/openremote/openremote/commit/51f4c3c0c8edd429a65237268d47d615617d4008) commit in `openremote/openremote`. +The pinned SHA is the [`51f4c3c0c8edd429a65237268d47d615617d4008`](https://github.com/openremote/core/commit/51f4c3c0c8edd429a65237268d47d615617d4008) commit in `openremote/core`. #### Pull request 1: Add Spotless and apply formatting @@ -681,7 +681,7 @@ When other custom-project template updates are also required, compare the existi Ensure the reusable workflow reference points to `master` before creating the first commit: ```yaml -uses: openremote/openremote/.github/workflows/ci_cd.yml@master +uses: openremote/core/.github/workflows/ci_cd.yml@main) ``` Commit the synchronized configuration and workflow change: diff --git a/versioned_docs/version-1.31.0/developer-guide/030-docker-compose-profiles.md b/versioned_docs/version-1.31.0/developer-guide/030-docker-compose-profiles.md index 2dd51e10..438b7965 100644 --- a/versioned_docs/version-1.31.0/developer-guide/030-docker-compose-profiles.md +++ b/versioned_docs/version-1.31.0/developer-guide/030-docker-compose-profiles.md @@ -10,7 +10,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving map tiles (not required) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.31.0/developer-guide/080-extensions.md b/versioned_docs/version-1.31.0/developer-guide/080-extensions.md index 2f0bfd79..e583d41d 100644 --- a/versioned_docs/version-1.31.0/developer-guide/080-extensions.md +++ b/versioned_docs/version-1.31.0/developer-guide/080-extensions.md @@ -38,4 +38,4 @@ This means extensions cannot yet be installed, enabled, or disabled dynamically We are also working on moving more reusable and domain-specific code out of the main OpenRemote repository and into the [extensions repository](https://github.com/openremote/extensions/). Over time, this should make the main repository leaner while making optional functionality easier to package, maintain, and reuse. -You can follow the ongoing work in the [extensions epic](https://github.com/openremote/openremote/issues/2598). +You can follow the ongoing work in the [extensions epic](https://github.com/openremote/core/issues/2598). diff --git a/versioned_docs/version-1.31.0/developer-guide/100-system-administration.md b/versioned_docs/version-1.31.0/developer-guide/100-system-administration.md index c3174653..4532f89f 100644 --- a/versioned_docs/version-1.31.0/developer-guide/100-system-administration.md +++ b/versioned_docs/version-1.31.0/developer-guide/100-system-administration.md @@ -322,7 +322,7 @@ When executing the automation, AWS will perform several actions under the hood. - [PostgreSQL Bloat Detection](https://wiki.postgresql.org/wiki/Show_database_bloat) ### Useful queries -Refer to the [Query Exporter configuration file](https://github.com/openremote/openremote/blob/master/deployment/query-exporter/config.yaml) for useful DB monitoring queries. +Refer to the [Query Exporter configuration file](https://github.com/openremote/core/blob/main/deployment/query-exporter/config.yaml) for useful DB monitoring queries. #### Adjust asset table fillfactor ```sql @@ -456,7 +456,7 @@ There are several DB functions included in the system to help with this task: #### DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database #### Examples diff --git a/versioned_docs/version-1.31.0/developer-guide/110-working-on-ui-and-apps.md b/versioned_docs/version-1.31.0/developer-guide/110-working-on-ui-and-apps.md index 5e3ed330..42b93a70 100644 --- a/versioned_docs/version-1.31.0/developer-guide/110-working-on-ui-and-apps.md +++ b/versioned_docs/version-1.31.0/developer-guide/110-working-on-ui-and-apps.md @@ -1,7 +1,7 @@ # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -46,9 +46,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.31.0/user-guide/010-deploying/10-custom-deployment.md b/versioned_docs/version-1.31.0/user-guide/010-deploying/10-custom-deployment.md index efda80ee..9f8887c0 100644 --- a/versioned_docs/version-1.31.0/user-guide/010-deploying/10-custom-deployment.md +++ b/versioned_docs/version-1.31.0/user-guide/010-deploying/10-custom-deployment.md @@ -38,19 +38,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/050-agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/130-working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -58,7 +58,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.31.0/user-guide/010-deploying/30-aws-cloudformation.md b/versioned_docs/version-1.31.0/user-guide/010-deploying/30-aws-cloudformation.md index ca31739d..4c1e3ab3 100644 --- a/versioned_docs/version-1.31.0/user-guide/010-deploying/30-aws-cloudformation.md +++ b/versioned_docs/version-1.31.0/user-guide/010-deploying/30-aws-cloudformation.md @@ -1,6 +1,6 @@ # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.31.0/user-guide/010-deploying/40-aws-marketplace.md b/versioned_docs/version-1.31.0/user-guide/010-deploying/40-aws-marketplace.md index 8be63c5a..fb9e9136 100644 --- a/versioned_docs/version-1.31.0/user-guide/010-deploying/40-aws-marketplace.md +++ b/versioned_docs/version-1.31.0/user-guide/010-deploying/40-aws-marketplace.md @@ -1,7 +1,7 @@ # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The CloudFormation template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -104,7 +104,7 @@ Amazon is provisioning the EC2 instance using the provided CloudFormation templa :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.31.0/user-guide/010-deploying/50-kubernetes.md b/versioned_docs/version-1.31.0/user-guide/010-deploying/50-kubernetes.md index de0fa48d..3c9d8c9e 100644 --- a/versioned_docs/version-1.31.0/user-guide/010-deploying/50-kubernetes.md +++ b/versioned_docs/version-1.31.0/user-guide/010-deploying/50-kubernetes.md @@ -3,9 +3,9 @@ In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.31.0/user-guide/010-deploying/80-release-management.md b/versioned_docs/version-1.31.0/user-guide/010-deploying/80-release-management.md index 1dcc8acc..59af5fc6 100644 --- a/versioned_docs/version-1.31.0/user-guide/010-deploying/80-release-management.md +++ b/versioned_docs/version-1.31.0/user-guide/010-deploying/80-release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.26.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) [NOTE: The OpenRemote CI/CD will auto set `MANAGER_VERSION` env variable based on what is found for `openremote` version in `gradle/libs.versions.toml` so this may not be needed] 2. Java code: Update the `openremote` version in the `gradle/libs.versions.toml` file @@ -116,6 +116,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.31.0/user-guide/020-manager-ui/10-manager-ui.md b/versioned_docs/version-1.31.0/user-guide/020-manager-ui/10-manager-ui.md index c174c4ac..6d2b02ba 100644 --- a/versioned_docs/version-1.31.0/user-guide/020-manager-ui/10-manager-ui.md +++ b/versioned_docs/version-1.31.0/user-guide/020-manager-ui/10-manager-ui.md @@ -4,7 +4,7 @@ slug: /user-guide/manager-ui/ # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -62,7 +62,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../060-rules-and-forecasting/50-forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -106,7 +106,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.31.0/user-guide/020-manager-ui/20-on-mobile.md b/versioned_docs/version-1.31.0/user-guide/020-manager-ui/20-on-mobile.md index 23f6ab04..8d361c77 100644 --- a/versioned_docs/version-1.31.0/user-guide/020-manager-ui/20-on-mobile.md +++ b/versioned_docs/version-1.31.0/user-guide/020-manager-ui/20-on-mobile.md @@ -10,7 +10,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.31.0/user-guide/020-manager-ui/30-appearance.md b/versioned_docs/version-1.31.0/user-guide/020-manager-ui/30-appearance.md index abbe0443..290af1ef 100644 --- a/versioned_docs/version-1.31.0/user-guide/020-manager-ui/30-appearance.md +++ b/versioned_docs/version-1.31.0/user-guide/020-manager-ui/30-appearance.md @@ -356,7 +356,7 @@ Exclude asset types from the 'Add asset' dialog. ``` #### Viewer Configuration -Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json { "pages": { diff --git a/versioned_docs/version-1.31.0/user-guide/030-assets-agents-and-attributes.md b/versioned_docs/version-1.31.0/user-guide/030-assets-agents-and-attributes.md index 35148f05..a6938678 100644 --- a/versioned_docs/version-1.31.0/user-guide/030-assets-agents-and-attributes.md +++ b/versioned_docs/version-1.31.0/user-guide/030-assets-agents-and-attributes.md @@ -33,7 +33,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -62,7 +62,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -74,7 +74,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -87,4 +87,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/010-overview.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/010-overview.md index 38acc3b8..fe13fda0 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/010-overview.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/010-overview.md @@ -1,17 +1,17 @@ # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -30,18 +30,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -51,9 +51,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -76,7 +76,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -85,14 +85,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md index 526f3091..be036513 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/020-bluetooth-mesh.md @@ -35,8 +35,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/050-http.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/050-http.md index 511dc579..6483b051 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/050-http.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/050-http.md @@ -7,10 +7,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -37,8 +37,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/060-knx.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/060-knx.md index 80148fc5..2f951b57 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/060-knx.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/060-knx.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/090-mqtt.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/090-mqtt.md index 18aacc8d..02e507e8 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/090-mqtt.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/090-mqtt.md @@ -23,7 +23,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -62,7 +62,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](./010-overview.md) - [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/100-simulator.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/100-simulator.md index a56aa2fd..308b043b 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/100-simulator.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/100-simulator.md @@ -11,9 +11,9 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | -| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `timezone` | The timezone the Simulator should follow when replaying the dataset. | [TimeZone](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorAgentLink.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/110-snmp.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/110-snmp.md index 997bfc23..50f651ad 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/110-snmp.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/110-snmp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/130-tcp.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/130-tcp.md index 404074a8..56cdf014 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/130-tcp.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/130-tcp.md @@ -7,8 +7,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/150-udp.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/150-udp.md index 210806c2..c52aeade 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/150-udp.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/150-udp.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/160-velbus.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/160-velbus.md index e68b35a9..d6e3b7fd 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/160-velbus.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/160-velbus.md @@ -2,8 +2,8 @@ Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -12,8 +12,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -24,7 +24,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/170-websocket-agent.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/170-websocket-agent.md index 8771d0f8..82c700e7 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/170-websocket-agent.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/170-websocket-agent.md @@ -7,9 +7,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -21,4 +21,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md index 36166cf0..98acc692 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md @@ -6,7 +6,7 @@ ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/030-docker-compose-profiles.md#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -112,7 +112,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" index c5839d65..7139be28 100644 --- "a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md" @@ -54,7 +54,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md index 94b0f5f8..772ac3e2 100644 --- a/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md +++ b/versioned_docs/version-1.31.0/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md @@ -249,7 +249,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../010-overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../020-manager-ui/10-manager-ui.md) - [Custom Deployment](../../010-deploying/10-custom-deployment.md) - [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md) diff --git a/versioned_docs/version-1.31.0/user-guide/050-manager-apis.md b/versioned_docs/version-1.31.0/user-guide/050-manager-apis.md index 10d9111c..9251063c 100644 --- a/versioned_docs/version-1.31.0/user-guide/050-manager-apis.md +++ b/versioned_docs/version-1.31.0/user-guide/050-manager-apis.md @@ -19,20 +19,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -51,7 +51,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -64,7 +64,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -82,7 +82,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -96,4 +96,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.31.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md b/versioned_docs/version-1.31.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md index 3c0d8f61..f1dd15d8 100644 --- a/versioned_docs/version-1.31.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md +++ b/versioned_docs/version-1.31.0/user-guide/060-rules-and-forecasting/40-groovy-rules.md @@ -12,21 +12,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -59,7 +59,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -97,7 +97,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.31.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md b/versioned_docs/version-1.31.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md index 03c222e8..338f2e7d 100644 --- a/versioned_docs/version-1.31.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md +++ b/versioned_docs/version-1.31.0/user-guide/070-identity-and-security/10-realms-users-and-roles.md @@ -15,7 +15,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../050-manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/10-edge-gateway.md b/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/10-edge-gateway.md index e717f57c..24cd4fcc 100644 --- a/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/10-edge-gateway.md +++ b/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/10-edge-gateway.md @@ -38,7 +38,7 @@ Just create a new Asset of type Gateway and the manager will provision a Keycloa ![image](img/manager-interconnect-rate.png) -You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/openremote/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) +You can set advanced per-attribute synchronisation using the JSON editor. See [GatewayAttributeFilter](https://github.com/openremote/core/blob/a321ea3e972d2e88e79225cf2459a5a026878e54/model/src/main/java/org/openremote/model/gateway/GatewayAttributeFilter.java) ``` [ { diff --git a/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md b/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md +++ b/versioned_docs/version-1.31.0/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.31.0/user-guide/090-domains/10-create-your-energy-management-system.md b/versioned_docs/version-1.31.0/user-guide/090-domains/10-create-your-energy-management-system.md index f44a015d..89cd4fa2 100644 --- a/versioned_docs/version-1.31.0/user-guide/090-domains/10-create-your-energy-management-system.md +++ b/versioned_docs/version-1.31.0/user-guide/090-domains/10-create-your-energy-management-system.md @@ -11,7 +11,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../010-deploying/10-custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../010-deploying/10-custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.4.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.4.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.4.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.4.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.4.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.4.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.4.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.4.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.4.0/architecture/security.md b/versioned_docs/version-1.4.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.4.0/architecture/security.md +++ b/versioned_docs/version-1.4.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.4.0/developer-guide/data-migration.md b/versioned_docs/version-1.4.0/developer-guide/data-migration.md index 374cc988..9c30150c 100644 --- a/versioned_docs/version-1.4.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.4.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.4.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.4.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.4.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.4.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.4.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.4.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.4.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.4.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.4.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.4.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.4.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.4.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.4.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.4.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.4.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.4.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.4.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.4.0/developer-guide/working-on-ui-and-apps.md index da80b500..7e87afd7 100644 --- a/versioned_docs/version-1.4.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.4.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.4.0/introduction.md b/versioned_docs/version-1.4.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.4.0/introduction.md +++ b/versioned_docs/version-1.4.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.4.0/quick-start.md b/versioned_docs/version-1.4.0/quick-start.md index 8d73c3dc..250eb4ab 100644 --- a/versioned_docs/version-1.4.0/quick-start.md +++ b/versioned_docs/version-1.4.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/mqtt.md index 3d477120..a1fe216a 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/mqtt.md @@ -63,7 +63,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/simulator.md index 5a5535f3..62ef56a6 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/simulator.md @@ -17,7 +17,7 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/snmp.md index 10a83a8d..559f9686 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/tcp.md index 690265fc..f83b03fa 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/udp.md index ab984d61..e64f3215 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/velbus.md index c0d353d2..465b983b 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 13 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.4.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.4.0/user-guide/agents-protocols/websocket-agent.md index f04908c6..2b38f68a 100644 --- a/versioned_docs/version-1.4.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.4.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.4.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.4.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.4.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.4.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.4.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.4.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.4.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.4.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.4.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.4.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.4.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.4.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.4.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.4.0/user-guide/deploying/custom-deployment.md index 0272850c..2655f56c 100644 --- a/versioned_docs/version-1.4.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.4.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.4.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.4.0/user-guide/deploying/release-management.md index a7d95f63..2d843ca1 100644 --- a/versioned_docs/version-1.4.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.4.0/user-guide/deploying/release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -116,5 +116,5 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory * openremote/console-ios: The CocoaPod "version" in the `ORLib/ORLib.podspec` file diff --git a/versioned_docs/version-1.4.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.4.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.4.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.4.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.4.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.4.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.4.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.4.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.4.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.4.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.4.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.4.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.4.0/user-guide/manager-apis.md b/versioned_docs/version-1.4.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.4.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.4.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.4.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.4.0/user-guide/manager-ui/manager-ui.md index 453992e8..77c3fc83 100644 --- a/versioned_docs/version-1.4.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.4.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.4.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.4.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.4.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.4.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.4.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.4.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.4.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.4.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.5.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.5.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.5.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.5.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.5.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.5.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.5.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.5.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.5.0/architecture/security.md b/versioned_docs/version-1.5.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.5.0/architecture/security.md +++ b/versioned_docs/version-1.5.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.5.0/developer-guide/data-migration.md b/versioned_docs/version-1.5.0/developer-guide/data-migration.md index 374cc988..9c30150c 100644 --- a/versioned_docs/version-1.5.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.5.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.5.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.5.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.5.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.5.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.5.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.5.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.5.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.5.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.5.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.5.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.5.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.5.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.5.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.5.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.5.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.5.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.5.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.5.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.5.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.5.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.5.0/introduction.md b/versioned_docs/version-1.5.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.5.0/introduction.md +++ b/versioned_docs/version-1.5.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.5.0/quick-start.md b/versioned_docs/version-1.5.0/quick-start.md index 8d73c3dc..250eb4ab 100644 --- a/versioned_docs/version-1.5.0/quick-start.md +++ b/versioned_docs/version-1.5.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/mqtt.md index 3d477120..a1fe216a 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/mqtt.md @@ -63,7 +63,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/simulator.md index 5a5535f3..62ef56a6 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/simulator.md @@ -17,7 +17,7 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/snmp.md index 10a83a8d..559f9686 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/tcp.md index 690265fc..f83b03fa 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/udp.md index ab984d61..e64f3215 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/velbus.md index c0d353d2..465b983b 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 13 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.5.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.5.0/user-guide/agents-protocols/websocket-agent.md index f04908c6..2b38f68a 100644 --- a/versioned_docs/version-1.5.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.5.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.5.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.5.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.5.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.5.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.5.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.5.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.5.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.5.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.5.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.5.0/user-guide/deploying/aws-marketplace.md index dc3e7166..36312e20 100644 --- a/versioned_docs/version-1.5.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.5.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the `EC2` instance using the provided `CloudFormation` te :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.5.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.5.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.5.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.5.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.5.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.5.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.5.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.5.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.5.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.5.0/user-guide/deploying/release-management.md index a7d95f63..2d843ca1 100644 --- a/versioned_docs/version-1.5.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.5.0/user-guide/deploying/release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -116,5 +116,5 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory * openremote/console-ios: The CocoaPod "version" in the `ORLib/ORLib.podspec` file diff --git a/versioned_docs/version-1.5.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.5.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.5.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.5.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.5.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.5.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.5.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.5.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.5.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.5.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.5.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.5.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.5.0/user-guide/manager-apis.md b/versioned_docs/version-1.5.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.5.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.5.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.5.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.5.0/user-guide/manager-ui/manager-ui.md index b3992a0c..b17fdf25 100644 --- a/versioned_docs/version-1.5.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.5.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -48,7 +48,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -77,7 +77,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -121,7 +121,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.5.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.5.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.5.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.5.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.5.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.5.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.5.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.5.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.6.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.6.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.6.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.6.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.6.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.6.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.6.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.6.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.6.0/architecture/security.md b/versioned_docs/version-1.6.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.6.0/architecture/security.md +++ b/versioned_docs/version-1.6.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.6.0/developer-guide/data-migration.md b/versioned_docs/version-1.6.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.6.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.6.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.6.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.6.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.6.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.6.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.6.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.6.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.6.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.6.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.6.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.6.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.6.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.6.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.6.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.6.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.6.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.6.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.6.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.6.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.6.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.6.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.6.0/introduction.md b/versioned_docs/version-1.6.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.6.0/introduction.md +++ b/versioned_docs/version-1.6.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.6.0/quick-start.md b/versioned_docs/version-1.6.0/quick-start.md index 8d73c3dc..250eb4ab 100644 --- a/versioned_docs/version-1.6.0/quick-start.md +++ b/versioned_docs/version-1.6.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/mqtt.md index a3830980..5d786b50 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/mqtt.md @@ -63,7 +63,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/simulator.md index e5d964e5..3ee13f7a 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/simulator.md @@ -17,7 +17,7 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.6.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.6.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.6.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.6.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.6.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.6.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.6.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.6.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.6.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.6.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.6.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.6.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.6.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.6.0/user-guide/deploying/aws-marketplace.md index dc3e7166..36312e20 100644 --- a/versioned_docs/version-1.6.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.6.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the `EC2` instance using the provided `CloudFormation` te :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.6.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.6.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.6.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.6.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.6.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.6.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.6.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.6.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.6.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.6.0/user-guide/deploying/release-management.md index b64f3610..ee67bc8c 100644 --- a/versioned_docs/version-1.6.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.6.0/user-guide/deploying/release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -116,5 +116,5 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory * openremote/console-ios: The CocoaPod "version" in the `ORLib/ORLib.podspec` file diff --git a/versioned_docs/version-1.6.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.6.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.6.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.6.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.6.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.6.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.6.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.6.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.6.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.6.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.6.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.6.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.6.0/user-guide/manager-apis.md b/versioned_docs/version-1.6.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.6.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.6.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.6.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.6.0/user-guide/manager-ui/manager-ui.md index b3992a0c..b17fdf25 100644 --- a/versioned_docs/version-1.6.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.6.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -48,7 +48,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -77,7 +77,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -121,7 +121,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.6.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.6.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.6.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.6.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.6.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.6.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.6.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.6.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.7.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.7.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.7.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.7.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.7.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.7.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.7.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.7.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.7.0/architecture/security.md b/versioned_docs/version-1.7.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.7.0/architecture/security.md +++ b/versioned_docs/version-1.7.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.7.0/developer-guide/data-migration.md b/versioned_docs/version-1.7.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.7.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.7.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.7.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.7.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.7.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.7.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.7.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.7.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.7.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.7.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.7.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.7.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.7.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.7.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.7.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.7.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.7.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.7.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.7.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.7.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.7.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.7.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.7.0/introduction.md b/versioned_docs/version-1.7.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.7.0/introduction.md +++ b/versioned_docs/version-1.7.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.7.0/quick-start.md b/versioned_docs/version-1.7.0/quick-start.md index 1620d00e..35a752e2 100644 --- a/versioned_docs/version-1.7.0/quick-start.md +++ b/versioned_docs/version-1.7.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/mqtt.md index a3830980..5d786b50 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/mqtt.md @@ -63,7 +63,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/simulator.md index e5d964e5..3ee13f7a 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/simulator.md @@ -17,7 +17,7 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.7.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.7.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.7.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.7.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.7.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.7.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.7.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.7.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.7.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.7.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.7.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.7.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.7.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.7.0/user-guide/deploying/aws-marketplace.md index dc3e7166..36312e20 100644 --- a/versioned_docs/version-1.7.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.7.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the `EC2` instance using the provided `CloudFormation` te :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.7.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.7.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.7.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.7.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.7.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.7.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.7.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.7.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.7.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.7.0/user-guide/deploying/release-management.md index 18e3782a..5ccade9b 100644 --- a/versioned_docs/version-1.7.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.7.0/user-guide/deploying/release-management.md @@ -5,16 +5,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -26,13 +26,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -116,6 +116,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.7.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.7.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.7.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.7.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.7.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.7.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.7.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.7.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.7.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.7.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.7.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.7.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.7.0/user-guide/manager-apis.md b/versioned_docs/version-1.7.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.7.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.7.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.7.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.7.0/user-guide/manager-ui/manager-ui.md index cb91b8e9..a09caa6b 100644 --- a/versioned_docs/version-1.7.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.7.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.7.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.7.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.7.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.7.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.7.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.7.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.7.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.7.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.8.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.8.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.8.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.8.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.8.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.8.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.8.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.8.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.8.0/architecture/security.md b/versioned_docs/version-1.8.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.8.0/architecture/security.md +++ b/versioned_docs/version-1.8.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.8.0/developer-guide/data-migration.md b/versioned_docs/version-1.8.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.8.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.8.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.8.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.8.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.8.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.8.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.8.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.8.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.8.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.8.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.8.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.8.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.8.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.8.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.8.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.8.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.8.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.8.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.8.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.8.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.8.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.8.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.8.0/introduction.md b/versioned_docs/version-1.8.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.8.0/introduction.md +++ b/versioned_docs/version-1.8.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.8.0/quick-start.md b/versioned_docs/version-1.8.0/quick-start.md index 1620d00e..35a752e2 100644 --- a/versioned_docs/version-1.8.0/quick-start.md +++ b/versioned_docs/version-1.8.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/mqtt.md index 082b2ee4..5e45f0f8 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/simulator.md index e5d964e5..3ee13f7a 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/simulator.md @@ -17,7 +17,7 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `replayData` | 24h dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.8.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.8.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.8.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.8.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.8.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.8.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.8.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.8.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.8.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.8.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.8.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.8.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.8.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.8.0/user-guide/deploying/aws-marketplace.md index dc3e7166..36312e20 100644 --- a/versioned_docs/version-1.8.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.8.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the `EC2` instance using the provided `CloudFormation` te :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.8.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.8.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.8.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.8.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.8.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.8.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.8.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.8.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.8.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.8.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.8.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.8.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.8.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.8.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.8.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.8.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.8.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.8.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.8.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.8.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.8.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.8.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.8.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.8.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.8.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.8.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.8.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.8.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.8.0/user-guide/manager-apis.md b/versioned_docs/version-1.8.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.8.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.8.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.8.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.8.0/user-guide/manager-ui/manager-ui.md index 99fc09ff..8157d06f 100644 --- a/versioned_docs/version-1.8.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.8.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.8.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.8.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.8.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.8.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.8.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.8.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.8.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.8.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE` diff --git a/versioned_docs/version-1.9.0/architecture/asset-location-tracking.md b/versioned_docs/version-1.9.0/architecture/asset-location-tracking.md index d826144d..95bbb2cc 100644 --- a/versioned_docs/version-1.9.0/architecture/asset-location-tracking.md +++ b/versioned_docs/version-1.9.0/architecture/asset-location-tracking.md @@ -64,7 +64,7 @@ When a geofence is triggered on an asset then the asset should update its own lo **By using geofence triggers in this way the handling of all location tracked assets can be processed in the same way i.e. the manager rules can compare location asset state changes irrespective of how the asset provides the location data.** ## Geofence Asset Adapters -Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/openremote/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: +Refer to the source code for details of the [GeofenceAssetAdapter](https://github.com/openremote/core/blob/location/manager/src/main/java/org/openremote/manager/rules/geofence/GeofenceAssetAdapter.java) and how it is used. Currently there is one implementation: ### ORConsoleGeofenceAssetAdapter (Android and iOS consoles) An asset will use this adapter if it matches the following criteria: diff --git a/versioned_docs/version-1.9.0/architecture/manager-endpoints-and-file-paths.md b/versioned_docs/version-1.9.0/architecture/manager-endpoints-and-file-paths.md index 3e7dafcd..a2215075 100644 --- a/versioned_docs/version-1.9.0/architecture/manager-endpoints-and-file-paths.md +++ b/versioned_docs/version-1.9.0/architecture/manager-endpoints-and-file-paths.md @@ -34,11 +34,11 @@ The following list shows the file paths used by our Docker containers; these can * `$OR_APP_DOCROOT` - Location of well known UI apps and shared resources; Default: `/opt/web` * `$OR_CUSTOM_APP_DOCROOT` - Location used to load paths that aren't well known which allows custom web content to be served; Default: `/deployment/manager/app` * `$OR_FIREBASE_CONFIG_FILE` - Location of Firebase Cloud Messaging configuration file which allows push notification functionality `/deployment/manager/fcm.json` -* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` -* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/openremote/blob/master/manager/src/main/resources/logging.properties). -* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) -* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/openremote/tree/master/manager/src/map) +* `$OR_KEYCLOAK_GRANT_FILE` - Location of [OAuth Grant](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/auth/OAuthGrant.java) in `json` representation which is used internally by the manager to communicate with Keycloak (in order to provision users, tenants, etc.); Default: `/deployment/manager/keycloak.json` +* `$OR_LOGGING_CONFIG_FILE` - Path of custom `JUL` logging config file; Default: `/deployment/manager/logging.properties`, falls back to built-in config if not specified or not found which can be found [here](https://github.com/openremote/core/blob/main/manager/src/main/resources/logging.properties). +* `$OR_MAP_TILES_PATH` - Path of `mbtiles` map data file; Default: `/deployment/map/mapdata.mbtiles`, falls back to built-in map data (`/opt/map/mapdata.mbtiles`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) +* `$OR_MAP_SETTINGS_PATH` - Map settings path to `json` configuration for styling the map; Default: `/deployment/map/mapsettings.json`, falls back to built-in settings (`/opt/map/mapsettings.json`) if not specified or not found which can be found [here](https://github.com/openremote/core/tree/main/manager/src/map) * `/deployment/manager/extensions` - Location of custom java code that is added to the classpath of the manager during startup * `$OR_PROVISIONING_DOCROOT` - Location of provisioning directory which can contain the following sub-directories of `json` representations to be automatically provisioned into the manager during a clean install setup: * `assets` - Sorted alphabetically, each `json` file should contain exactly 1 asset in `json` representation - * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation + * `consoleappconfig`- Each `json` file should contain exactly 1 [ConsoleAppConfig](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/apps/ConsoleAppConfig.java) in `json` representation diff --git a/versioned_docs/version-1.9.0/architecture/security.md b/versioned_docs/version-1.9.0/architecture/security.md index 08e90954..53796900 100644 --- a/versioned_docs/version-1.9.0/architecture/security.md +++ b/versioned_docs/version-1.9.0/architecture/security.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Security ## Realm clients -For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. +For each realm created within the Manager (via UI, provisioning code or REST API) a client called `openremote` is automatically created and all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) are automatically added to this client. ## Service users -Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. +Service users are actually implemented using Keycloak clients with `Service account enabled`, this creates an 'invisible' user account with a username in the format `service-account-${clientId}` (invisible because they don't show in the user list in the Keycloak admin console). The client that is generated when a service user is created will also have the all the roles defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java) added to this client. diff --git a/versioned_docs/version-1.9.0/developer-guide/data-migration.md b/versioned_docs/version-1.9.0/developer-guide/data-migration.md index fc5c5bf2..18b3b39b 100644 --- a/versioned_docs/version-1.9.0/developer-guide/data-migration.md +++ b/versioned_docs/version-1.9.0/developer-guide/data-migration.md @@ -13,7 +13,7 @@ There are several DB functions included in the system to help with this task: ## DB Functions The DB functions and their arguments can be found in the code at: -https://github.com/openremote/openremote/blob/master/manager/src/main/resources/org/openremote/manager/setup/database +https://github.com/openremote/core/blob/main/manager/src/main/resources/org/openremote/manager/setup/database ## Examples diff --git a/versioned_docs/version-1.9.0/developer-guide/docker-compose-profiles.md b/versioned_docs/version-1.9.0/developer-guide/docker-compose-profiles.md index d2b14db0..82feec29 100644 --- a/versioned_docs/version-1.9.0/developer-guide/docker-compose-profiles.md +++ b/versioned_docs/version-1.9.0/developer-guide/docker-compose-profiles.md @@ -14,7 +14,7 @@ The following services are used by the main OpenRemote code base: * map - tileserver-gl service that is used for serving raster map tiles (only needed for UI components/apps that use mapbox-js) ## Docker Compose profiles -Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/openremote/tree/master/profile) although the `demo` profile is in the root of the repo. +Docker Compose profiles (Docker Compose `.yml` files) are used to configure and start required services; the standard profiles are located in the profile folder of the main [OpenRemote repository](https://github.com/openremote/core/tree/main/profile) although the `demo` profile is in the root of the repo. The standard profiles are: diff --git a/versioned_docs/version-1.9.0/developer-guide/installing-and-using-docker.md b/versioned_docs/version-1.9.0/developer-guide/installing-and-using-docker.md index 0a59efd6..0b7d413a 100644 --- a/versioned_docs/version-1.9.0/developer-guide/installing-and-using-docker.md +++ b/versioned_docs/version-1.9.0/developer-guide/installing-and-using-docker.md @@ -133,7 +133,7 @@ you can install a virtual machine as follows: - Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads) - Install [Vagrant](https://developer.hashicorp.com/vagrant/install) - Install [Docker Toolbox](https://www.docker.com/products/overview#/docker_toolbox) -- Check out the [OpenRemote project](https://github.com/openremote/openremote) and change to `$PROJECT_DIRECTORY/platform/` +- Check out [OpenRemote Core](https://github.com/openremote/core) and change to `$PROJECT_DIRECTORY/platform/` - Execute `vagrant up` to start a virtual machine Configure the virtual machine as a Docker host machine with: diff --git a/versioned_docs/version-1.9.0/developer-guide/preparing-the-environment.md b/versioned_docs/version-1.9.0/developer-guide/preparing-the-environment.md index 24eb5ad5..545081a6 100644 --- a/versioned_docs/version-1.9.0/developer-guide/preparing-the-environment.md +++ b/versioned_docs/version-1.9.0/developer-guide/preparing-the-environment.md @@ -51,5 +51,5 @@ Ensure that you have the `JAVA_HOME` environment variable set to the path of JDK ## See also - [Installing and using Docker](installing-and-using-docker.md) -- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/openremote/blob/master/README.md) +- [Next 'Get Started' step: Build the code and run the manager](https://github.com/openremote/core/blob/main/README.md) - [Get Started](https://openremote.io/get-started-iot-platform/) diff --git a/versioned_docs/version-1.9.0/developer-guide/setting-up-an-ide.md b/versioned_docs/version-1.9.0/developer-guide/setting-up-an-ide.md index cceb5632..6ca978cf 100644 --- a/versioned_docs/version-1.9.0/developer-guide/setting-up-an-ide.md +++ b/versioned_docs/version-1.9.0/developer-guide/setting-up-an-ide.md @@ -61,7 +61,7 @@ You can download the [IntelliJ Community Edition](https://www.jetbrains.com/idea ##### Grep Console Styling -The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/openremote/tree/master/tools/intellij). +The log messages of the running application can be colour-highlighted with the [GrepConsole plugin](https://plugins.jetbrains.com/plugin/7125-grep-console) and our [configuration](https://github.com/openremote/core/tree/main/tools/intellij). - Locate XML style config for Grep Console in openremote/tools/intellij - Choice the default or dark styling config diff --git a/versioned_docs/version-1.9.0/developer-guide/working-on-ui-and-apps.md b/versioned_docs/version-1.9.0/developer-guide/working-on-ui-and-apps.md index 6467e978..eb2f6421 100644 --- a/versioned_docs/version-1.9.0/developer-guide/working-on-ui-and-apps.md +++ b/versioned_docs/version-1.9.0/developer-guide/working-on-ui-and-apps.md @@ -5,7 +5,7 @@ sidebar_position: 5 # Working on UI and apps ## Overview -Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/openremote/tree/master/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). +Front end applications are [webcomponent](https://www.webcomponents.org/) based using the [lit](https://lit.dev/) library and [Material Design](https://material.io/components?platform=web) for styling. We use a combination of Polymer LIT, Material Design and our own OpenRemote elements. The UI components are [published on NPM](https://www.npmjs.com/org/openremote). The applications themselves are composed of our re-usable modular UI components which can be found in the code base in the [ui/component](https://github.com/openremote/core/tree/main/ui/component) folder, these are also published to [NPM](https://www.npmjs.com/org/openremote). ## Working on an app (e.g. Manager UI) To work on an app for example the `Manager UI` : @@ -50,9 +50,9 @@ If you want to create a new `component` or `app` then simply copy an existing on ### UI Components & Apps (`/ui`) All UI components and apps are located in the `ui` directory; here you can find the standard OpenRemote web UI components and apps using a monorepo architecture. The code is divided into categories by directory: -* [`component`](https://github.com/openremote/openremote/tree/master/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules -* [`app`](https://github.com/openremote/openremote/tree/master/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) -* [`demo`](https://github.com/openremote/openremote/tree/master/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) +* [`component`](https://github.com/openremote/core/tree/main/ui/component) - Base OpenRemote JS modules and web components (built using Polymer) these are written as ES6 modules +* [`app`](https://github.com/openremote/core/tree/main/ui/app) - Built-in OpenRemote web applications (applications can be built with whatever frameworks/libraries are desired) +* [`demo`](https://github.com/openremote/core/tree/main/ui/demo) - Demos of each web component (provides a development harness for developers working on the components) Typescript is used to provide static typing with the OpenRemote model available in the `@openremote/model` component package; the components are published to `npm` under the `@openremote` scope; see the README in each component for information about each specific component. diff --git a/versioned_docs/version-1.9.0/introduction.md b/versioned_docs/version-1.9.0/introduction.md index db3bc4cf..2e2b6576 100644 --- a/versioned_docs/version-1.9.0/introduction.md +++ b/versioned_docs/version-1.9.0/introduction.md @@ -10,11 +10,11 @@ sidebar_position: 1 ![image](img/architecture.jpg) -The core of the OpenRemote system is the [Manager](https://github.com/openremote/openremote/tree/master/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. +The core of the OpenRemote system is the [Manager](https://github.com/openremote/core/tree/main/manager), a headless Java application that forms an IoT context broker which captures the current asset state of the system. You can create a dynamic schema of your assets and their attributes in the manager, modelling the problem domain. For example, you would create Building, Apartment, Room, and Sensor assets to model an IoT system for a smart home or office. Rules can be written in Groovy, JavaScript, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when humidity in a room keeps increasing, you can notify a group of users via email and on their mobile devices. -Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. +Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/core/tree/main/agent), they are the interface to 3rd party APIs and service protocols. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices. The manager provides APIs for monitoring and administrating the system: @@ -28,7 +28,7 @@ The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies * Home automation control panel * Smart city monitoring dashboard -We support the latest HTML standards and provide [web components](https://github.com/openremote/openremote/tree/master/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/openremote/tree/master/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. +We support the latest HTML standards and provide [web components](https://github.com/openremote/core/tree/main/ui/component) to build applications quickly, utilising the OpenRemote asset model and APIs: you can easily show all your assets on a map, for example. [Full web applications](https://github.com/openremote/core/tree/main/ui/app) are also bundled with OpenRemote, these can be used as templates for building custom web applications. The OpenRemote [Android](https://github.com/openremote/console-android) and [iOS](https://github.com/openremote/console-ios) Consoles are native mobile applications that act as a shell for web applications built with the OpenRemote web components; a web browser is also considered to be a console and we automatically integrate native console features like push notifications and geofencing on each platform. If you have an existing website, add OpenRemote web components and wrap it in the OpenRemote console to connect your mobile users to your IoT network. diff --git a/versioned_docs/version-1.9.0/quick-start.md b/versioned_docs/version-1.9.0/quick-start.md index 1620d00e..35a752e2 100644 --- a/versioned_docs/version-1.9.0/quick-start.md +++ b/versioned_docs/version-1.9.0/quick-start.md @@ -17,7 +17,7 @@ You can quickly try the online demo with restricted access, login credentials ar 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](https://www.docker.com/products/docker-desktop) installed (v18+). 2. Download the Docker Compose file: -[OpenRemote Stack](https://raw.githubusercontent.com/openremote/openremote/master/docker-compose.yml) (Right click 'Save link as...') +[OpenRemote Stack](https://raw.githubusercontent.com/openremote/core/main/docker-compose.yml) (Right click 'Save link as...') 3. In a terminal `cd` to where you just saved the compose file and then run: ```shell docker-compose pull diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/bluetooth-mesh.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/bluetooth-mesh.md index 90b14116..c5c61c7f 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/bluetooth-mesh.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/bluetooth-mesh.md @@ -39,8 +39,8 @@ The following describes the supported agent configuration attributes: | `applicationKey` | Bluetooth Mesh application key | Text, format: <key index>:<key> (e.g. 0:2AD08F7660AA535FA7DE4C918241F04F) | Y | | `proxyAddress` | Bluetooth Mesh proxy address - if omitted proxy with best RSSI is selected | Text (e.g. B0:CE:18:A3:0B:09) | N | | `sourceAddress` | Bluetooth Mesh source unicast address | Text, format: 4 hexadecimal digits (e.g. 199A), range: 0001-7FFF | Y | -| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | -| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `mtu` | Maximum transmission unit size for Bluetooth Mesh proxy communication - if omitted default value is 20 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | +| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md index 62c3c3dc..7cdf2dba 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md @@ -10,7 +10,7 @@ sidebar_position: 1 ::: -The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). +The example below describes interactively linking asset attributes to Artnet Servers using the [ArtnetClientProtocol](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/dmx/artnet/ArtnetClientProtocol.java). The following examples assume that you are running the [Demo Docker Compose profile](../../../developer-guide/docker-compose-profiles#demo-docker-composeyml). ## Setup the basic Artnet connection The following examples assume that the DMX controller is bound to the loopback address `127.0.0.1` on port `6454`: @@ -116,7 +116,7 @@ The structure of the import JSON will directly be translated to the structure of ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git "a/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" index 42d5f48e..5cfac5e5 100644 --- "a/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" +++ "b/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" @@ -58,7 +58,7 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md index fc0e3712..a26b78d1 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md @@ -253,7 +253,7 @@ If you click on the 'Write' button, it'll send the configured command to the con ## See also - [Agent overview](../overview.md) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../../manager-ui/manager-ui.md) - [Custom Deployment](../../deploying/custom-deployment.md) - [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/http.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/http.md index 1e2f827e..4f1dc39f 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/http.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/http.md @@ -11,10 +11,10 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | +| `baseURL` | Server base HTTP(S) URL; this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | Y | | `followRedirects` | Should the agent follow any redirect responses (e.g. HTTP status code 3xx) | Boolean | N | -| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestHeaders` | Headers to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `requestQueryParameters` | Query parameters to be added to all requests that go through this agent | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | | `requestTimeoutMillis` | Request timeout for all requests that go through this agent (ms) | Integer | N (Default = `10000` | ### Example multivalued Text Map @@ -41,8 +41,8 @@ For attributes linked to this agent, the following describes the supported agent | `type` | Agent type | Text (Must be `HTTPAgentLink`) | Y | | `path` | The request path (appended to the `baseURL` defined on the agent) | Text | N | | `method` | The HTTP method used for the request | Text | N (Default = `GET`) | -| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | -| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `headers` | Headers to be added to this specific request (in addition to any `requestHeaders` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | +| `queryParameters` | Query parameters to be added to this specific request (in addition to any `requestQueryParameters` defined on the agent) | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L192) | N | | `pollingMillis` | Indicates that a polling request should be made every (ms) to populate the attribute with the response | Integer | N | | `pagingMode` | Enables support for `Link` header for pagination see [here](https://docs.github.com/en/rest/guides/traversing-with-pagination) for details; if this is enabled and the `Link` header is found then all pages are requested and combined before pushing through to the attribute | Boolean | N | | `contentType` | Sets the `Content-Type` header (convenient alternative to using `headers` | Text | N (Default = `text/plain`) | diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/knx.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/knx.md index 70eca5c8..f2341524 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/knx.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/knx.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | +| `host` | IP Interface/Router hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | IP Interface/Router port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N | | `NATMode` | Enable NAT mode | Boolean | N (Default = `false`) | | `routingMode` | Enable Routing mode | Boolean | N (Default = `false`) | | `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) | diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/mqtt.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/mqtt.md index ba5584b7..e5231d80 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/mqtt.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/mqtt.md @@ -27,7 +27,7 @@ They are all provided after accessing that thing's dashboard and creating a new Download the Device Certificate and activate it, download the private key file, and the Amazon Trust Services endpoint RSA 2048 bit key. :::warning -The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/openremote/issues/2093). +The password of the keystore and the password of each keypair within the keystore should be the same, and it should be set to `OR_KEYSTORE_PASSWORD`. Otherwise, you may see errors like `Get Key failed: Given final block not properly padded`. You can find a more detailed explanation in [this GitHub issue](https://github.com/openremote/core/issues/2093). ::: The password of everything keystore-related is `OR_KEYSTORE_PASSWORD`, for when it is requested. If it is not set as an environment variable before starting OpenRemote for the first time, it will default to ``. If you want to change the password later, you will need to change it in both the keystore and the truststore, as well as the passwords of each keypair within the keystore and truststore, and make sure to set `OR_KEYSTORE_PASSWORD` as that password. @@ -66,7 +66,7 @@ The agent attempts to connect, and it successfully authenticates and connects to - [Agent overview](overview.md) - [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) -- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) +- [Quick Start](https://github.com/openremote/core/blob/main/README.md) - [Manager UI Guide](../manager-ui/manager-ui.md) - [Custom Deployment](../deploying/custom-deployment.md) - [Setting up an IDE](../../developer-guide/setting-up-an-ide.md) diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/overview.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/overview.md index f87f173e..718f689d 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/overview.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/overview.md @@ -4,18 +4,18 @@ sidebar_position: 1 # Overview -[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: +[Agents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories: * Specialised agents (Velbus, Z-Wave, KNX, etc.) * Generic agents (HTTP, TCP, UDP, WS, MQTT, etc.) ## Agent <-> Protocol relationship -Each agent type has a corresponding [Protocol](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: +Each agent type has a corresponding [Protocol](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/Protocol.java) implementation; the Agent stores the configuration which is then passed to an instance of the Agent's Protocol implementation so there is a one-to-one relationship. The following attributes are required for all agent types: | Attribute | Description | Value type | | ------------- | ------------- | ------------- | | `agentDisabled` | Disable the agent | Boolean | -| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | +| `agentStatus` | The current status of the agent | [Connection Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L174) | ## Specialised agents @@ -34,18 +34,18 @@ Generic agents understand nothing about the underlying devices/service and ther | `messageStripDelimiter` | For protocols that use `messageDelimiters`, this indicates whether or not the matched delimiter should be stripped from the message. | Boolean | ## Agent links -Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. +Regular assets are connected to agents by adding an `Agent Link` configuration item to attributes that need connecting, agents can have their own `Agent Link` configuration options but below are the options that are common to all and can be found in the [Agent link](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/agent/AgentLink.java) class; agents that don't have custom options use the `Default` Agent link type. | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | +| `id` | The agent ID that is the target for this agent link | [Asset ID](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L135) | Y | | `type` | Agent link type; must be the correct type for the agent/protocol being linked. Agent's that don't have a custom agent link type use the `type` value `Default` | Text | Y | -| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `valueFilters` | When an agent protocol updates the value of a linked attribute it can be desirable to filter that value to extract a specific piece of information that should actually be written to the linked attribute; this option defines a series of value filters that incoming messages should pass through before being passed to the agent protocol, the incoming message is passed to each filter in array order and the result of one is the input to the next (i.e. they are composite). The available value filters can be found from the known types in the Javadoc but available types at the time of writing can be found below | [ValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | | `valueConverter` | Defines a value converter map to allow for basic value type conversion; the incoming value will be converted to JSON and if this string matches a key in the converter then the value of that key will be pushed through to the attribute. An example use case is an API that returns `ACTIVE/DISABLED` text but you want to connect this to a Boolean attribute `true/false` | JSON Object | N | | `writeValueConverter` | Similar to `valueConverter` but for outbound (Attribute -> Agent protocol) messages | JSON Object | N | | `writeValue` | Text value to be used for outbound messages; can be used with any attribute type in combination with the dynamic placeholder (see below) or can be used with an attribute of type `ExecutionStatus` (i.e. executable attributes) to determine the value sent to the agent protocol when the attribute execution starts | Text (JSON etc.) | N | -| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/openremote/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | -| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | +| `messageMatchPredicate` | Used in combination with the `messageMatchFilters`; the predicate is applied to inbound messages (after the `messageMatchFilters` have been applied) and if the predicate matches then the message is said to match the attribute and the attribute will be updated by passing the original message through the value filter(s) and converter | [ValuePredicate](https://github.com/openremote/core/blob/a58951f6780176163bad7f58f79ba2a12eb75eb6/model/src/main/java/org/openremote/model/query/filter/ValuePredicate.java) | N | +| `messageMatchFilters` | Used in combination with the `messageMatchPredicate` to allow filtering the inbound message before the match predicate is evaluated | [ValueFilter[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueFilter.java) | N | ### Dynamic Value Injection Dynamic injection of the written or current attribute value is supported in generic protocols by using the dynamic value placeholder `%VALUE[:FORMAT]%`, this can be used in the `writeValue` of the `AgentLink` as well as in other supported places depending on the protocol, for example the HTTP protocol supports using this in the headers, query parameters and/or path. The `:FORMAT` is optional and uses the [java.util.Formatter](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Formatter.html), if not specified then built in value conversion is used to convert the value into a JSON string representation. e.g. `%VALUE:%.2f%`, `%VALUE%` @@ -55,9 +55,9 @@ Dynamic injection of the current time is supported in generic protocols by using ### Value filter known types -* [RegexValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) -* [SubStringValueFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) -* [JSONPathFilter](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) +* [RegexValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/RegexValueFilter.java) +* [SubStringValueFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/SubStringValueFilter.java) +* [JSONPathFilter](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/JsonPathFilter.java) ```json @@ -80,7 +80,7 @@ Dynamic injection of the current time is supported in generic protocols by using ``` ## Executable Linked Attributes -Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). +Attributes that have a type of [Attribute Execute Status](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeExecuteStatus.java), if a value of `REQUEST_START` is written to the attribute then the system will look for a `writeValue` field in the Agent Link and if it is found then this value will be written through to the protocol (note that dynamic value injection doesn't work in this scenario as there is no dynamic value). ## Agent and Asset Discovery/Import Discovery refers to searching for agents/assets in a protocol specific way i.e. discovering what devices are connected. @@ -89,14 +89,14 @@ Import refers to uploading a protocol specific project file (Velbus `.vlp`, KNX Discovery and/or import support is protocol specific and the following interfaces are used to identify what a given protocol supports: -### [ProtocolInstanceDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) +### [ProtocolInstanceDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolInstanceDiscovery.java) Indicates that a given protocol supports instance/agent discovery. For a protocol to support this the implementing class must be supplied to the AgentDescriptor. -### [ProtocolAssetDiscovery](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) +### [ProtocolAssetDiscovery](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetDiscovery.java) Indicates that a given protocol supports child asset discovery. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. -### [ProtocolAssetImport](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) +### [ProtocolAssetImport](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/protocol/ProtocolAssetImport.java) Indicates that a given protocol supports child asset import. For a protocol to support this it must implement this interface. When a protocol supports this then it is possible to initiate the import by selecting the `Agent` in the asset viewer and browsing for the protocol specific project file using the import file picker and then initiating the import; any assets then generated by the protocol will be automatically added as children of the `Agent`. diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/simulator.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/simulator.md index c70a0714..c7aff2fa 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/simulator.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/simulator.md @@ -16,8 +16,8 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `SimulatorAgentLink`) | Y | -| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | -| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | +| `replayData` | A dataset of values that should be replayed (i.e. written to the linked attribute) in a continuous loop | [SimulatorReplayDatapoint[]](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/simulator/SimulatorReplayDatapoint.java) | N | +| `schedule` | When defined overwrites the default 24h dataset length and how it is replayed. | [SimulatorProtocol.Schedule](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/simulator/SimulatorProtocol.java) | N | ## Additional info Attributes linked to this agent that are written to will follow a route through the system as if it came from a remote service. diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/snmp.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/snmp.md index 6798cb4a..d53db010 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/snmp.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/snmp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `bindPort` | Bind port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | +| `bindHost` | Bind hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `bindPort` | Bind port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | N (Default = `162`) | | `SNMPVersionValue` | SNMP Version | Text (`V1`, `V2c`, `V3c`) | N | diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/tcp.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/tcp.md index b09f9717..86bcde7c 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/tcp.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/tcp.md @@ -11,8 +11,8 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used. diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/udp.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/udp.md index c774b0f8..db78db03 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/udp.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/udp.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | UDP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | -| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | UDP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | UDP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `bindPort` | UDP server bind port (for responses); if not specified then a random ephemeral port will be used | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ## Agent link diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/velbus.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/velbus.md index 135ff7a1..18dabb64 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/velbus.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/velbus.md @@ -6,8 +6,8 @@ sidebar_position: 14 Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations: -* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) -* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) +* Direct RS232/Serial using `VMBRSUSB` or `VMB1USB` - [Velbus Serial Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusSerialAgent.java) (Requires a `device` mapping for `manager` Docker container) +* TCP/IP using [VelServ](https://github.com/jeroends/velserv) or similar - [Velbus TCP Agent](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/velbus/VelbusTCPAgent.java) ## Agent configuration @@ -16,8 +16,8 @@ The following describes the supported agent configuration attributes: ### TCP | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | -| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | +| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y | +| `port` | TCP server port | [Port number](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y | ### Serial | Attribute | Description | Value type | Required | @@ -28,7 +28,7 @@ The following describes the supported agent configuration attributes: ### TCP & Serial | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | +| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y | ## Agent link For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields: diff --git a/versioned_docs/version-1.9.0/user-guide/agents-protocols/websocket-agent.md b/versioned_docs/version-1.9.0/user-guide/agents-protocols/websocket-agent.md index a24a42b9..0b2f4f02 100644 --- a/versioned_docs/version-1.9.0/user-guide/agents-protocols/websocket-agent.md +++ b/versioned_docs/version-1.9.0/user-guide/agents-protocols/websocket-agent.md @@ -11,9 +11,9 @@ The following describes the supported agent configuration attributes: | Attribute | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | -| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | -| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | -| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `connectURL` | WebSocket connection URL (`ws`/`wss`); this is used as the base URL for all requests that go through this agent | [HTTP URL](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L196) | Y | +| `connectHeaders` | Headers to be added to the initial connection request | [Multivalued Text Map](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java#L80) | N | +| `connectSubscriptions` | List of subscriptions that should be made when the protocol connects to the WebSocket server | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | ### WebSocket Subscriptions The subscription attribute allows a set of subscriptions to be made when the connection is first established, these subscriptions are executed in the order they appear in the list/array. A subscription can be a WebSocket subscription or a HTTP subscription (a simple HTTP request), this covers most real world WebSocket server use cases, as this is a publish-subscribe protocol you quite often need to specify what you want to subscribe to when you connect. @@ -25,4 +25,4 @@ For attributes linked to this agent, the following describes the supported agent | Field | Description | Value type | Required | | ------------- | ------------- | ------------- | ------------- | | `type` | Agent type | Text (Must be `WebsocketAgentLink`) | Y | -| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/openremote/blob/master/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | +| `websocketSubscriptions` | List of subscriptions that should be made when this attribute is linked to the agent | [WebSocket Subscription[]](https://github.com/openremote/core/blob/main/agent/src/main/java/org/openremote/agent/protocol/websocket/WebsocketSubscription.java) | N | diff --git a/versioned_docs/version-1.9.0/user-guide/assets-agents-and-attributes.md b/versioned_docs/version-1.9.0/user-guide/assets-agents-and-attributes.md index a9cab2ff..fe98abc2 100644 --- a/versioned_docs/version-1.9.0/user-guide/assets-agents-and-attributes.md +++ b/versioned_docs/version-1.9.0/user-guide/assets-agents-and-attributes.md @@ -20,7 +20,7 @@ Agents are a special type of asset which link external services/devices with you Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors). ## Asset Type Model -Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. +Our asset type model is configurable which allows it to be modelled on the domain objects relevant for the specific use case (energy domain, smart city, etc.). At present it is only possible to configure the asset model in Java code with the long term aim of allowing configuration via the `Manager UI`. You can [find the default asset type models here](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl) and use them as examples to create your own. The asset model available for a given OpenRemote instance can be interrogated using the [Asset Model HTTP API](https://demo.openremote.io/swagger/#/Asset%20Model). @@ -49,7 +49,7 @@ An attribute descriptor has a name which refers to the name of the attribute and * `type` - name of the value type descriptor that describes the data type of the attribute * `constraints` - value constraints that must be applied to the value (size/length, regex, not empty, etc.) * `format` - Formatting rules to be applied when converting the value to string representation for UI purposes (number of decimal places, boolean as on/off etc.) -* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) +* `units` - array of strings that compose the units for this attribute based on the [HTML5 Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) but with broader unit support (e.g. `["kilo", "metre", "per", "hour"]` → `km/h`) (see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/Constants.java#L73) for a full list of standard unit types that our system supports - additional ones can be used but UI translations must be provided to support these). Currency symbols are also supported by providing an upper case currency code as defined in `ISO 4217 currency codes`, depending on your chosen language the system then takes care of either prepending the currency symbol (`£0.15/kWh`) or appending it (`0.15€/kWh`) * `meta` - List of default meta items (configuration items) that should be added when this attribute is first created * `optional` - boolean flag indicating if the attribute must be present (this doesn't control whether or not it must have a value - that is handled by constraints) @@ -61,7 +61,7 @@ A meta item descriptor has a name which refers to the name of the meta item and * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in meta item descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/MetaItemType.java), +For details on the built-in meta item descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/MetaItemType.java), for asset/agent specific configuration items check their documentation pages and/or Javadoc. ### Value descriptors @@ -74,4 +74,4 @@ A value descriptor has a name which must be unique within the OpenRemote instanc * `format` - same as attribute descriptor above * `units` - same as attribute descriptor above -For details on the built-in value descriptors available see [here](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java). +For details on the built-in value descriptors available see [here](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/value/ValueType.java). diff --git a/versioned_docs/version-1.9.0/user-guide/deploying/aws-cloudformation.md b/versioned_docs/version-1.9.0/user-guide/deploying/aws-cloudformation.md index 78da16e0..fff0c76d 100644 --- a/versioned_docs/version-1.9.0/user-guide/deploying/aws-cloudformation.md +++ b/versioned_docs/version-1.9.0/user-guide/deploying/aws-cloudformation.md @@ -4,7 +4,7 @@ sidebar_position: 3 # AWS CloudFormation -The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml). +The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-create-vpc.yml). At OpenRemote we use AWS for hosting our deployments, this guide explains how to create and configure AWS EC2 hosts using CloudFormation for running the OpenRemote started with Docker Compose; it is written from the OpenRemote organisation perspective but can be used to assist in setting up your own AWS hosted infrastructure. Please refer to the AWS documentation for more details on the services/tools mentioned (we don't generally offer AWS support but some kind person may be able to help on the [forum](https://forum.openremote.io)). diff --git a/versioned_docs/version-1.9.0/user-guide/deploying/aws-marketplace.md b/versioned_docs/version-1.9.0/user-guide/deploying/aws-marketplace.md index dc3e7166..36312e20 100644 --- a/versioned_docs/version-1.9.0/user-guide/deploying/aws-marketplace.md +++ b/versioned_docs/version-1.9.0/user-guide/deploying/aws-marketplace.md @@ -5,7 +5,7 @@ sidebar_position: 4 # AWS Marketplace This guide explains how to provision/configure OpenRemote via the AWS Marketplace. -The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-aws-marketplace.yml). +The `CloudFormation` template can be found at [cloudformation-aws-marketplace.yml](https://github.com/openremote/core/blob/main/.ci_cd/aws/cloudformation-aws-marketplace.yml). This product requires an internet connection to deploy properly. The following packages are downloaded on deployment: * `Docker` @@ -108,7 +108,7 @@ Amazon is provisioning the `EC2` instance using the provided `CloudFormation` te :::note -The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/openremote/releases) to see the latest release. +The latest version of OpenRemote will be installed. Click [here](https://github.com/openremote/core/releases) to see the latest release. ::: diff --git a/versioned_docs/version-1.9.0/user-guide/deploying/configuring-the-manager-ui.md b/versioned_docs/version-1.9.0/user-guide/deploying/configuring-the-manager-ui.md index 95c7271f..a688bb43 100644 --- a/versioned_docs/version-1.9.0/user-guide/deploying/configuring-the-manager-ui.md +++ b/versioned_docs/version-1.9.0/user-guide/deploying/configuring-the-manager-ui.md @@ -349,7 +349,7 @@ Set which assettypes are excluded from the list of asset types that can be selec } }, ``` -**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/openremote/blob/master/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. +**Assets - viewer:** Configure which panels are shown on the assets page. You can include or exclude attributes to show per panel. These panels can be set for all asset types, or specified per type. This is an overwrite of the default config of the [asset-viewer](https://github.com/openremote/core/blob/main/ui/component/or-asset-viewer/src/index.ts). In `historyConfig` an example is given on how to specify the columns shown in a table for an attribute that is not a number or boolean; if no config is given, it will automatically create columns. ```json "viewer": { "assetTypes": { diff --git a/versioned_docs/version-1.9.0/user-guide/deploying/custom-deployment.md b/versioned_docs/version-1.9.0/user-guide/deploying/custom-deployment.md index 486b2300..0f86b571 100644 --- a/versioned_docs/version-1.9.0/user-guide/deploying/custom-deployment.md +++ b/versioned_docs/version-1.9.0/user-guide/deploying/custom-deployment.md @@ -42,19 +42,19 @@ Most of the changes made in the manager_config.json will not be visible to the d ::: ### Asset type (/model) -Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl). +Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/core/tree/main/model/src/main/java/org/openremote/model/asset/impl). ### Agents & Protocols (/agent) Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/connecting-protocol-adaptors-with-agents.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected. ### Setup code (/setup) Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\ -The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ -The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. +The keycloaksetup is used to prepare realms and users. For inspiration see the [keycloak setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/KeycloakDemoSetup.java) of the demo.\ +The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/core/blob/main/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo. ### Map (/deployment/map) You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \ -Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ +Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/core/blob/main/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \ If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings. ### Apps (/ui/app) @@ -62,7 +62,7 @@ Here you can add your own custom applications. You can use the Manager app as a ### Setting environment variables and Docker volume mappings for services The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use: -https://github.com/openremote/openremote/blob/master/profile/deploy.yml +https://github.com/openremote/core/blob/main/profile/deploy.yml ### Custom domain If you want to deploy the OpenRemote stack on a custom domain then all that is needed is to ensure that the Docker host where the stack is running is reachable using the custom domain name on the following ports: diff --git a/versioned_docs/version-1.9.0/user-guide/deploying/kubernetes.md b/versioned_docs/version-1.9.0/user-guide/deploying/kubernetes.md index abf8e1bc..d07a7ea7 100644 --- a/versioned_docs/version-1.9.0/user-guide/deploying/kubernetes.md +++ b/versioned_docs/version-1.9.0/user-guide/deploying/kubernetes.md @@ -7,9 +7,9 @@ sidebar_position: 5 In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes. To make the deployment as easy as possible, we provide Helm charts. -You can find them, as well as all the required files, in the [openremote](https://github.com/openremote/openremote) repository, -under the [kubernetes](https://github.com/openremote/openremote/tree/master/kubernetes) folder. -The folder also includes a [README.md](https://github.com/openremote/openremote/tree/master/kubernetes/README.md) file with detailed information on configuration and deployment. +You can find them, as well as all the required files, in the [OpenRemote Core](https://github.com/openremote/core) repository, +under the [kubernetes](https://github.com/openremote/core/tree/main/kubernetes) folder. +The folder also includes a [README.md](https://github.com/openremote/core/tree/main/kubernetes/README.md) file with detailed information on configuration and deployment. At this stage, the helm charts are not published in an OCI registry. diff --git a/versioned_docs/version-1.9.0/user-guide/deploying/release-management.md b/versioned_docs/version-1.9.0/user-guide/deploying/release-management.md index 43e1c854..80592cf4 100644 --- a/versioned_docs/version-1.9.0/user-guide/deploying/release-management.md +++ b/versioned_docs/version-1.9.0/user-guide/deploying/release-management.md @@ -9,16 +9,16 @@ All the OpenRemote code is open-source and available on GitHub in repositories i ## Manager -The Manager UI and backend is versioned in the [openremote/openremote](https://github.com/openremote/openremote) repository on GitHub. +The Manager UI and backend is versioned in the [openremote/core](https://github.com/openremote/core) repository on GitHub. The code in this repository is used for building the [openremote/manager](https://hub.docker.com/r/openremote/manager) Docker image which is available on Docker Hub. -You can find the release notes of each version on the [Releases](https://github.com/openremote/openremote/releases) page on GitHub. +You can find the release notes of each version on the [Releases](https://github.com/openremote/core/releases) page on GitHub. When using the `openremote/manager` Docker image in production, it is recommended to always use a version tag (e.g. 1.2.0) so you know exactly what version is deployed. Besides the version tags you can also use the "latest" and "develop" tags which are convenient during testing: * **latest**: this tag is updated to always contain the most recent release. -* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "master" branch. It is not recommended to use this tag in production because it can be unstable. +* **develop**: this tag is used during development for testing changes before an actual release is created. A new "develop" image is built for every commit pushed to the "main" branch. It is not recommended to use this tag in production because it can be unstable. ## Custom Projects @@ -30,13 +30,13 @@ A custom project always depends on the following versioned OpenRemote Manager ar * Java code (packaged as JARs, published to [Maven Central](https://search.maven.org/search?q=g:io.openremote)) * TypeScript code (packaged as NPMs, published to [npmjs.com](https://www.npmjs.com/settings/openremote/packages)) -All these artifacts share the same version number as they are all created by the [openremote/openremote](https://github.com/openremote/openremote) repository. +All these artifacts share the same version number as they are all created by the [openremote/core](https://github.com/openremote/core) repository. ### Updating to new a release When updating a custom project to a new OpenRemote release, you can follow the steps below: -1. Read the [release notes](https://github.com/openremote/openremote/releases) to get familiar with the changes +1. Read the [release notes](https://github.com/openremote/core/releases) to get familiar with the changes 2. Update the code to use the new version: 1. Docker images: Update the `openremote/manager` image tag in the `docker-compose.yml` file (or environment variable) 2. Java code: Update the `openremoteVersion` in the `gradle.properties` file @@ -120,6 +120,6 @@ When the release workflow is started it will: Most of the release process is now automated but after a release some versions still need to be manually updated: -* openremote/openremote: The "version" in the `package.json` files of all modules in the 'ui' directory +* openremote/core: The "version" in the `package.json` files of all modules in the 'ui' directory For the iOS ORLib, the `Marketing Version` Build Setting of the ORLib target must be manually updated PRIOR to running the release workflow. diff --git a/versioned_docs/version-1.9.0/user-guide/domains/create-your-energy-management-system.md b/versioned_docs/version-1.9.0/user-guide/domains/create-your-energy-management-system.md index c4a2eae0..e315e45c 100644 --- a/versioned_docs/version-1.9.0/user-guide/domains/create-your-energy-management-system.md +++ b/versioned_docs/version-1.9.0/user-guide/domains/create-your-energy-management-system.md @@ -15,7 +15,7 @@ _Figure 1. Overview of Energy Management System and all the elements._ ### Set up OpenRemote and customisation -Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. +Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/core/blob/main/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote. To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this. diff --git a/versioned_docs/version-1.9.0/user-guide/gateways-and-devices/mqtt-gateway-api.md b/versioned_docs/version-1.9.0/user-guide/gateways-and-devices/mqtt-gateway-api.md index cc4bf8fc..356a1c5d 100644 --- a/versioned_docs/version-1.9.0/user-guide/gateways-and-devices/mqtt-gateway-api.md +++ b/versioned_docs/version-1.9.0/user-guide/gateways-and-devices/mqtt-gateway-api.md @@ -5,7 +5,7 @@ unlisted: true # MQTT Gateway API :::warning -This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/openremote/tree/feature/mqtt-gateway-api). +This feature is currently under development and is a work in progress. It has not been merged into the main branch and is subject to change. You can find the branch [here](https://github.com/openremote/core/tree/feature/mqtt-gateway-api). ::: @@ -57,50 +57,50 @@ Operations are publish topics that provide asset management functionality. Each > `{realm}/{clientId}/operations/assets/{responseIdentifier}/create/response` -#### [Assets](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) +#### [Assets](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Create Asset** Topic: `{realm}/{clientId}/operations/assets/{responseIdentifier}/create` Description: Creates an asset. Requires a valid [asset template](#asset-templates) as the payload. The response identifier is used to correlate the response to the request. Requires a subscription to the response topic to receive the response. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Get Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/get` Description: Requests the data of the specified assetId. Requires a subscription to the response topic to receive the data. - Response: [Asset](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/Asset.java) + Response: [Asset](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/Asset.java) - **Update Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/update` Description: Updates the specified asset. Requires a valid [asset template](#asset-templates) as the payload. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **Delete Asset** Topic: `{realm}/{clientId}/operations/assets/{assetId}/delete` Description: Deletes the specified asset. - Response: [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) + Response: [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) -#### [Attributes](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) +#### [Attributes](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) - **Update Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/update` Description: Updates the specified attribute of the specified asset. - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **Update Multiple Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/update` Description: Updates the attributes of the specified asset based on the payload, allowing for multi-attribute updating. Example: [multi-attribute payload](#multi-attribute-update-payload) - Response: [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. + Response: [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) objects. - **Get Attributes** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/get` Description: Requests the attribute data of the specified asset. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) objects. - **Get Specific Attribute** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get` Description: Requests the specified attribute data of the specified asset. The attribute data contains the full attribute object. - Response: [Attribute](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. + Response: [Attribute](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/Attribute.java) object. - **Get Attribute Value** Topic: `{realm}/{clientId}/operations/assets/{assetId}/attributes/{attributeName}/get-value` @@ -116,7 +116,7 @@ Events are subscription topics that allow for subscribing to various events, suc -#### [AssetEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) - **All Asset Events of the Realm** Topic: `{realm}/{clientId}/events/assets/#` @@ -133,7 +133,7 @@ Events are subscription topics that allow for subscribing to various events, suc - **All Asset Events for the Direct Children of the Specified Asset** Topic: `{realm}/{clientId}/events/assets/{assetId}/+` -#### [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) - **All Attribute Events of the Realm** Topic: `{realm}/{clientId}/events/assets/+/attributes/#` @@ -161,7 +161,7 @@ Events are subscription topics that allow for subscribing to various events, suc :::note -`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributes-value` topic prefix can be used in place of `attributes` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: diff --git a/versioned_docs/version-1.9.0/user-guide/identity-and-security/realms-users-and-roles.md b/versioned_docs/version-1.9.0/user-guide/identity-and-security/realms-users-and-roles.md index b42087e0..99aa43b5 100644 --- a/versioned_docs/version-1.9.0/user-guide/identity-and-security/realms-users-and-roles.md +++ b/versioned_docs/version-1.9.0/user-guide/identity-and-security/realms-users-and-roles.md @@ -19,7 +19,7 @@ These are users that login interactively by filling in their username and passwo These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type. ## Roles -Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java). +Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/security/ClientRole.java). ## Realm roles There are two additional realm roles for users within OpenRemote. diff --git a/versioned_docs/version-1.9.0/user-guide/manager-apis.md b/versioned_docs/version-1.9.0/user-guide/manager-apis.md index 72ea3b54..6f7fd46d 100644 --- a/versioned_docs/version-1.9.0/user-guide/manager-apis.md +++ b/versioned_docs/version-1.9.0/user-guide/manager-apis.md @@ -23,20 +23,20 @@ Authentication is done using standard `Authorization` header bearer token where * Authorization Header: `Authorization: Bearer {accessToken}` ## WS (WebSocket) API -This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. +This is a publish subscribe API that is event based, where events are of type [SharedEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/SharedEvent.java). Authentication is done using `Authorization` query parameter with a valid access token obtained from the token endpoint. The realm of the authenticating user must also be included as an `Realm` query parameter. * URL: `/websocket/events?Realm={realm}&Authorization=Bearer%20{accessToken}` e.g. `wss://localhost:8080/websocket/events?Realm=smartcity&Authorization=Bearer%20eye2238f3a-e43c-3f54-a05a-dd2e4bd4631f` ### Subscriptions -A subscription is created by sending an [EventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. +A subscription is created by sending an [EventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventSubscription.java) as `JSON` prefixed with `SUBSCRIBE:`. When a subscribe message is sent then the server will determine if the requesting user is authorised to make such a subscription and if so then the manager will reply with the same subscription `JSON` object but prefixed with `SUBSCRIBED:`, if the user is not authorised then the subscription `JSON` object will be returned but prefixed with `UNAUTHORIZED:`. -When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. +When an event occurs in the manager that matches an existing subscription then a [TriggeredEventSubscription](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/TriggeredEventSubscription.java) as `JSON` prefixed with `TRIGGERED:` will be sent to the client. ### Publish -[AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. +[AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) can be published and you can wait for the change to take place and an [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) to be returned when the attribute does get updated. -It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. +It is also possible to emulate the request response nature of the HTTP API in order to read data using the WebSocket API by sending an [EventRequestResponseWrapper](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/event/shared/EventRequestResponseWrapper.java) as `JSON` prefixed with `REQUESTRESPONSE:`, the `messageId` is used to allow the client to associate the request message with the response message. This request response emulation is useful for example to read an asset. For more details on the structure of messages please refer to the Javadoc of each object type for detailed information. @@ -55,7 +55,7 @@ Another publish subscribe API, authentication requires a **'Service user'** user * It's important that the `clientId` in the following topics matches the one in the MQTT credentials. ### Subscriptions -#### [AssetEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/AssetEvent.java) +#### [AssetEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/asset/AssetEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/asset/{assetId}` @@ -68,7 +68,7 @@ Examples: * `{realm}/{clientId}/asset/{assetId}/#`- All asset events for descendants of the specified asset * `{realm}/{clientId}/asset/{assetId}/+`- All asset events for direct children of the specified asset -#### [AttributeEvents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) +#### [AttributeEvents](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) It is possible to subscribe to these events using the topic format: `{realm}/{clientId}/attribute/{attributeName}/{assetId}` @@ -86,7 +86,7 @@ Examples: :::note -`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. +`attributevalue` topic prefix can be used in place of `attribute` to only return the value of the [AttributeEvent](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/attribute/AttributeEvent.java) rather than the entire event. ::: @@ -100,4 +100,4 @@ It is possible to publish attribute events to specific assets using the followin Clients can configure a last will topic and payload as defined in the MQTT specification; the topic and payload can use the standard attribute publish topic/payload so it is possible to update an attribute when the client connection is closed un-expectedly; the client must have permission to access the specified attribute. ### MQTT custom handlers -It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. +It is possible to inject custom handlers for MQTT messages by implementing the [MQTTHandler](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/mqtt/MQTTHandler.java) abstract class and registering it using the standard Service Loader mechanism (i.e. add it to `resources/META-INF/services/org.openremote.manager.mqtt.MQTTHandler`). The custom handler can choose to intercept messages based on topic, user and/or whether it is a pub or sub request, see Javadoc of `MQTTHandler` for more details. diff --git a/versioned_docs/version-1.9.0/user-guide/manager-ui/manager-ui.md b/versioned_docs/version-1.9.0/user-guide/manager-ui/manager-ui.md index f3fd3390..8f23f1f1 100644 --- a/versioned_docs/version-1.9.0/user-guide/manager-ui/manager-ui.md +++ b/versioned_docs/version-1.9.0/user-guide/manager-ui/manager-ui.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Manager UI -The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). +The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific realm. We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/core/blob/main/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8). To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details. @@ -32,7 +32,7 @@ _Figure 2. An asset of the type 'environment'_ ### Create an asset -With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/openremote/blob/master/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. +With the correct permissions (not available in the demo, you'll need your own [installation](https://github.com/openremote/core/blob/main/README.md)), you can create a new asset on the Assets page by clicking the `+` in the header of the asset tree. This will open a modal that shows the available asset types. When you select one you will see the attributes and optional attributes. Optional attributes can be added by selecting them in this modal. You can set or change its parent by selecting the upper right pencil and selecting an asset in the asset tree. Click `Add` to create the asset. ![](img/create-asset.png) _Figure 3. Creating an asset of the type 'environment' with the Building selected as parent_ @@ -61,7 +61,7 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op | `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) | | `Data points max age days` | Time period for which data is stored | | `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' | -| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | +| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/core/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) | | `Has predicted data points` | Enable the option to add forecasted values | | `Label` | Add a friendly name, replacing the default name | | `Momentary` | Button input to send the true/on/pressed/closed value when pressed; and false value when released | @@ -105,7 +105,7 @@ _Figure 6. Asset filtering by typing the asset name (left) or by using the advan ### Grouping assets and group control -In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. +In the asset tree you can multi-select assets and collectively add them as children to a group, just by dragging them onto another asset. You can use it for example to add a series of lights as children to a room or building. Additionally, by adding [this Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each group asset, you can control all these child assets at the same time, just by creating the corresponding attributes (same name and type) in the parent asset. So in case of the light example: by creating an 'onOff' (boolean) attribute in the room or building asset you can control all lights at the same time. Note that you create a [Control Groovy rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) for each parent asset and adjust the parentAssetID to the ID of the parent asset. You can find the ID in the URL of the asset page. Additionally, don't forget to add the configuration item 'Rule state' to the attribute of both the parent and child assets. ## Rules diff --git a/versioned_docs/version-1.9.0/user-guide/manager-ui/on-mobile.md b/versioned_docs/version-1.9.0/user-guide/manager-ui/on-mobile.md index ea934049..ce61cbc1 100644 --- a/versioned_docs/version-1.9.0/user-guide/manager-ui/on-mobile.md +++ b/versioned_docs/version-1.9.0/user-guide/manager-ui/on-mobile.md @@ -14,7 +14,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin 1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users. -2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. +2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/core/tree/main/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored. 3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen. diff --git a/versioned_docs/version-1.9.0/user-guide/rules-and-forecasting/groovy-rules.md b/versioned_docs/version-1.9.0/user-guide/rules-and-forecasting/groovy-rules.md index d05b0c19..e20dc70d 100644 --- a/versioned_docs/version-1.9.0/user-guide/rules-and-forecasting/groovy-rules.md +++ b/versioned_docs/version-1.9.0/user-guide/rules-and-forecasting/groovy-rules.md @@ -16,21 +16,21 @@ List of objects: * `LOG` provides basic logging functionality using `java.util.logging.Logger` -* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) +* `rules` provides access to the ruleset. This is how individual rules are added to the ruleset. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/RulesBuilder.java) -* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Assets.java) +* `assets` provides access to relevant assets. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Assets.java) -* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/rules/Users.java) +* `users` provides access to relevant users. [Relevant class in source](https://github.com/openremote/core/blob/main/model/src/main/java/org/openremote/model/rules/Users.java) -* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/openremote/blob/master/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) +* `notifications` provides the ability to send notifications. [Relevant class in source](https://github.com/openremote/core/blob/main/manager/src/main/java/org/openremote/manager/rules/facade/NotificationsFacade.java) ## Example Groovy Rules In this section you can find code templates and corresponding examples on how to use Groovy Rules. ### Groovy Rule templates: -* [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) -* [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) +* [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) +* [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) ### Example: Group Control ![OpenRemote groovy group control example figure](img/groovy-group-control.png) _Example: Group Control. The asset group along with the attributes and configuration items used in this example._ @@ -63,7 +63,7 @@ This example demonstrates how to control multiple child assets (lights) by the p 4. Create rule: * Select the **Lights Controller** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Control Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor + * Copy the [Group Control Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/ChildAssetControl.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Lights Controller** asset ID * Name the rule **Lights Controller rule** and click `SAVE` @@ -101,7 +101,7 @@ This example demonstrates how to sum attribute values from child assets to the p 4. Create rule: * Select the **Solar Farm** asset and note down its asset ID (the last part of the URL, see above figure) * Go to the `Rules` page, click the `+` icon, and select `Groovy`. A basic Groovy Rule example will appear in the code editor, remove this example - * Copy the [Group Summation Rule](https://github.com/openremote/openremote/blob/master/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor + * Copy the [Group Summation Rule](https://github.com/openremote/core/blob/main/test/src/test/resources/org/openremote/test/rules/GroupSummationRule.groovy) into the code editor * In the code editor, replace the asset ID of the `parentAssetId` variable with your **Solar Farm** asset ID * Name the rule **Solar Power Summation rule** and click `SAVE`