• Stars
    star
    218
  • Rank 181,805 (Top 4 %)
  • Language Vue
  • License
    Eclipse Public Li...
  • Created over 5 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Web UIs of openHAB

openHAB Web Interface Add-ons

GitHub Actions Build Status Jenkins Build Status EPL-2.0 Crowdin Bountysource

This repository contains the official web user interfaces for openHAB.

openHAB has a main web UI but more can be installed thanks to its modular add-on architecture.

Most UIs rely on openHAB's REST API which is largely implemented in openHAB Core bundles, but sometimes on individual add-ons. Therefore, a significant chunk of issues that can be mistakenly assumed to be UI issues could in fact be depending on an extension of the REST API.

If your issue is not strictly UI-related be aware it could eventually be transferred or closed with an indication that it requires a change in openHAB Core to be implemented. Should you be interested in openHAB Core development, we invite you to check out https://github.com/openhab/openhab-core.

That being said, if you feel you have a genuine problem with one of the web UIs, please review the existing issues at https://github.com/openhab/openhab-webui/issues first, then file a new one at https://github.com/openhab/openhab-webui/issues/new/choose if appropriate - the menu will guide you.

Development / Repository Organization

openHAB add-ons are Java .jar files.

The openHAB build system is based on Maven. The official IDE (Integrated development environment) is Eclipse.

You find the following repository structure:

.
+-- bom       Maven buildsystem: Bill of materials
|   +-- openhab-ui  Lists all extensions
|
+-- bundles   Official openHAB web interface extensions
|   +-- org.openhab.ui
|   +-- org.openhab.ui.basicui
|   +-- org.openhab.ui.habot
|   +-- org.openhab.ui.habpanel
|   +-- ...
|
+-- features  Part of the runtime dependency resolver ("Karaf features")
|
+-- licenses  Infrastructure to easily add license headers to source files
|
+-- tools     Static code analyser instructions
|
+-- CODEOWNERS  This file assigns people to directories so that they are informed
|   if a pull-request would modify their add-ons.
|
+-- LICENSE   The official license for this repository.

How to contribute

In most cases, you don't need a Java development environment for UI development.

Instead, make sure you have NodeJS 16.14 (HABot: 12.16) or later and npm 8.6 (HABot: 6.14) or later installed.

Then identify in the bundles directories where the frontend code is - for instance, for the main UI it is bundles/org.openhab.ui/web/. Then follow the instructions in the specific add-on's CONTRIBUTING.md file to get started. In the main UI's case, it is located in bundles/org.openhab.ui/CONTRIBUTING.md. In many cases it will involve executing some npm commands to install dependencies and start a development server.

However, if you want to compile the final .jar add-ons, we have assembled some step-by-step guides for different IDEs on our developer documentation website:

https://www.openhab.org/docs/developer/#setup-the-development-environment

Command line build

To build all add-ons from the command-line, type in:

mvn clean install

To improve build times you can add the following options to the command:

Option Description
-DskipChecks Skip the static analysis (Checkstyle, FindBugs)
-DskipTests Skip the execution of tests
-Dmaven.test.skip=true Skip the compilation and execution of tests
-Dfeatures.verify.skip=true Skip the Karaf feature verification
-Dspotless.check.skip=true Skip the Spotless code style checks
-o Work offline so Maven does not download any updates
-T 1C Build in parallel, using 1 thread per core

For example you can skip checks and tests during development with:

mvn clean install -DskipChecks -DskipTests

Adding these options improves the build time but could hide problems in your code. Parallel builds are also less easy to debug and the increased load may cause timing sensitive tests to fail.

To check if your code is following the code style run: mvn spotless:check To reformat your code so it conforms to the code style you can run: mvn spotless:apply

When your add-on also has an integration test in the itests directory, you may need to update the runbundles in the itest.bndrun file when the Maven dependencies change. Maven can resolve the integration test dependencies automatically by executing: mvn clean install -DwithResolver -DskipChecks

The build generates a .jar file per bundle in the respective bundle /target directory.

Happy coding! πŸŽ‰

Thanks to BrowserStack for kindly providing the maintainers with free open source accounts to help testing the UIs on a wide range of devices!

More Repositories

1

openhab1-addons

Add-ons for openHAB 1.x
Java
3,427
star
2

openhab-addons

Add-ons for openHAB
Java
1,873
star
3

openhab-distro

The binary distribution of openHAB
PowerShell
1,300
star
4

openhab-core

Core framework of openHAB
Java
914
star
5

openhabian

openHABian - empowering the smart home, for Raspberry Pi and Debian systems
Shell
821
star
6

openhab-android

openHAB client for Android
Kotlin
599
star
7

openhab-cloud

Cloud companion for openHAB instances
JavaScript
314
star
8

openhab-docs

This repository contains the documentation for openHAB.
Ruby
271
star
9

org.openhab.ui.habmin

HABmin - a graphical user interface for openHAB 2
JavaScript
231
star
10

openhab-docker

Repository for building Docker containers for openHAB
Shell
210
star
11

openhab-ios

The repository of the iOS client
Swift
190
star
12

openhab-google-assistant

openHAB Google Assistant: Actions on Google for openHAB
JavaScript
175
star
13

org.openhab.binding.zwave

openHAB binding for Z-Wave
Java
171
star
14

openhab-syno-spk

openHAB Synology SPK Install Package
Shell
161
star
15

openhab-vscode

VS Code extension for openHAB configuration files
TypeScript
159
star
16

openhab-alexa

openHAB skill for Amazon Alexa
JavaScript
152
star
17

org.openhab.ui.habpanel

OUTDATED repo - HABPanel has moved to the openhab-webui repo!
HTML
97
star
18

openhab-windows

Universal Windows App for openHAB
C#
89
star
19

openhab-qnap-qpkg

openHAB Packages for QNAP NAS systems
Shell
77
star
20

org.openhab.binding.zigbee

openHAB binding for ZigBee
Java
73
star
21

org.openhab.ui.habot

A chatbot for openHAB using machine-learning natural language processing from OpenNLP
Java
65
star
22

openhab-js

openHAB JavaScript Library for JavaScript Scripting Automation
JavaScript
38
star
23

static-code-analysis

Maven tooling for static code analysis
Java
32
star
24

openhab-mycroft

Mycroft skill for openHAB
Python
21
star
25

website

This repository contains the final artifacts from which the project website is served.
Vue
21
star
26

openhab-snap

Packaging of openHAB for Ubuntu Core
Shell
18
star
27

jamod

A fork of Java Modbus Library (jamod) - http://jamod.sourceforge.net/
Java
18
star
28

openhab-linuxpkg

Repo for Linux packages
Shell
18
star
29

openhab-pebble

Pebble client for openHAB
JavaScript
11
star
30

openhab2-addons

This is an archive of the full history of the openhab2-addons repo.
Java
10
star
31

org.openhab.binding.bacnet

openHAB 1.x binding for BACnet
Java
8
star
32

openhab-jruby

A Helper Library for Writing openHAB Automations in Ruby
Ruby
5
star
33

openhab-bundles

5
star
34

openhab-deps-repo

openHAB p2 repository
Shell
4
star
35

openhab.ios.old

This repo contains the code of the now outdated first iOS openHAB client
4
star
36

infrastructure

This repository contains scripts and artifacts that address the overall build infrastructure of openHAB
Groovy
3
star
37

openhab-osgiify

OSGi-ified versions of openHAB dependencies
3
star
38

quercus-osgi

1
star