updated generated content

Signed-off-by: Kai Kreuzer <kai@openhab.org>
pull/532/merge
Kai Kreuzer 2017-10-18 17:08:32 +02:00
parent bd3111097b
commit f1727cae7b
No known key found for this signature in database
GPG Key ID: 5110767B6248D3C0
123 changed files with 838 additions and 529 deletions

View File

@ -36,9 +36,9 @@ This [DECT repeater](https://avm.de/produkte/fritzdect/fritzdect-repeater-100/)
This [powerline adapter](http://avm.de/produkte/fritzpowerline/fritzpowerline-546e/) can be used via the bridge or in stand-alone mode. It supports switching the outlet and current power and energy consumption readings. This device does not contain a temperature sensor.
### FRITZ!DECT 300 / Comet DECT
### FRITZ!DECT 301 / FRITZ!DECT 300 / Comet DECT
These two devices [FRITZ!DECT 300](https://avm.de/produkte/fritzdect/fritzdect-300/) and [Comet DECT](https://www.eurotronic.org/produkte/comet-dect.html) ( [EUROtronic Technology GmbH](https://www.eurotronic.org) ) are used to regulate radiators via DECT protocol. The FRITZ!Box can handle up to twelve heating thermostats. The binding provides channels for reading and setting the temperature. Additionally you can check the eco temperature, the comfort temperature and the battery level of the device. The FRITZ!Box has to run at least on firmware FRITZ!OS 6.35.
These devices [FRITZ!DECT 301](https://avm.de/produkte/fritzdect/fritzdect-301/), [FRITZ!DECT 300](https://avm.de/produkte/fritzdect/fritzdect-300/) and [Comet DECT](https://www.eurotronic.org/produkte/comet-dect.html) ( [EUROtronic Technology GmbH](https://www.eurotronic.org) ) are used to regulate radiators via DECT protocol. The FRITZ!Box can handle up to twelve heating thermostats. The binding provides channels for reading and setting the temperature. Additionally you can check the eco temperature, the comfort temperature and the battery level of the device. The FRITZ!Box has to run at least on firmware FRITZ!OS 6.35.
## Discovery

View File

@ -0,0 +1,106 @@
---
id: cm11a
label: Cm11a (X10 controller)
title: Cm11a (X10 controller) - Bindings
type: binding
description: "The cm11a is a serial computer interface that allows a computer to control attached X10 modules."
since: 2x
install: auto
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Cm11a (X10 controller) Binding
The cm11a is a serial computer interface that allows a computer to control attached X10 modules.
## Hardware - cm11a
The cm11a is an older device that communicates over a serial interface.
Most people connect it to a computer using a serial to USB adapter.
This binding has been tested with serial port and a serial to USB adapter.
X10 (and thus the cm11a) supports two types of modules.
The Switch (also called Appliance) module supports being turned on and off. The Lamp module supports on, off, dim and bright.
In addition to controlling X10 modules the cm11a listens on the powerline and reports to the computer changes made to X10 modules via other controllers.
### Use of serial port
The binding opens the serial port when it starts and keeps it open until the binding is terminated.
If the serial port is disconnected a reconnect will be attempted the next time it is needed.
Therefore, other applications should not attempt to use the port when OpneHAB is running.
However, another program could load macros into the cm11a before openHAB starts.
### cm11a macros
The cm11a is also able to store a schedule and control modules based on that schedule.
That functionality in not currently supported by or used by this binding.
This binding doesn't clear macros from the cm11a so other programs could load macros before openHAB is started.
If you want to do scheduling using openHAB you should be sure there are no macros in the cm11a.
The `heyu clear` command can be used for this purpose.
### X10 powerline monitoring
The cm11a has the ability to capture x10 messages on the powerline.
This binding captures those messages, decodes them and updates the item state.
## Supported things
The binding currently supports the following thing types:
* switch - which supports on and off states
* dimmer - which can be dimmed in addition to turned on or off
## Discovery
Discovery is not supported because that kind of information is not available in the cm11a or the X10 specification.
## Configuration
The cm11a acts as a Bridge to the controlled modules, which are represented as Things.
### Bridge Configuration
The bridge requires the parameter `serialPort` which identifies the serial port the cm11a is connected to.
### Thing Configuration
Each attached thing must specify the `houseUnitCode` set in the device (i.e. A1).
## Channels
| Thing | Channel Type ID | Item Type | Description |
| ----- | --------------- | --------- | ----------- |
| switch | switchState | Switch | An On/Off switch |
| dimmer | lightDimmer | Dimmer | A dimmable device |
## Full example
### Things
Bridge cm11a:cm11a:MyCm11a [ serialPort="COM3" ] {
Thing switch SwitchA1 [ houseUnitCode="A1" ]
Thing dimmer DimmerA2 [ houseUnitCode="A2" ]
}
### Items
Switch SwitchA1 "Kitchen Plug" <light> (someGroup) { channel="cm11a:switch:MyCm11a:SwitchA1:switchstatus" }
Dimmer DimmerA2 "Porch lights" <slider> (someGroup) { channel="cm11a:dimmer:MyCm11a:DimmerA2:lightlevel" }
## Known issues
1. When openHAB starts up it doesn't restore the last state of each module.
And, the cm11a does not provide a discovery service. Therefore it assumes everything off.
2. The dimmer slider can get out of sync with the actual light because of the way X10 works.
On some switches if you turn them on they will go to full bright and some switches will return to the previous dim level.
## References
1. [CM11A (X10) Protocol Document](http://wanderingsamurai.net/electronics/cm11a-x10-protocol-document)
2. [Heyu - control software for the cm11a](http://www.heyu.org/)
3. cm11a Controllers are available for purchase from several sites on the internet.

View File

@ -18,8 +18,7 @@ install: auto
The openHAB KNX binding allows one to connect to [KNX Home Automation](http://www.knx.org/) installations. Switching lights on and off, activating your roller shutters or changing room temperatures are only some examples.
To access your KNX bus you either need an KNX IP gateway (like e.g. the [Gira KNX IP Router]
(http://www.gira.com/en/gebaeudetechnik/systeme/knx-eib_system/knx-produkte/systemgeraete/knx-ip-router.html)) or a PC running [EIBD](http://www.auto.tuwien.ac.at/~mkoegler/index.php/eibd) (free open source component that enables communication with the KNX bus).
To access your KNX bus you either need an KNX IP gateway (like e.g. the [Gira KNX IP Router](http://www.gira.com/en/gebaeudetechnik/systeme/knx-eib_system/knx-produkte/systemgeraete/knx-ip-router.html)) or a PC running [EIBD](http://www.auto.tuwien.ac.at/~mkoegler/index.php/eibd) (free open source component that enables communication with the KNX bus).
> Please note that the KNX Binding is using **224.0.23.12:3671/UDP** by default to connect to your gateway.

View File

@ -119,6 +119,7 @@ The account Thing Type does not have any channels.
| previous_mode | String | The previous mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R |
| temperature | Number | Current temperature in degrees Celsius | R |
| time_to_target_mins | Number | Time left to the target temperature (mins) approximately | R |
| set_point | Number | The set point in degrees Celsius | R/W |
| sunlight_correction_active | Switch | If sunlight correction is active | R |
| sunlight_correction_enabled | Switch | If sunlight correction is enabled | R |
| using_emergency_heat | Switch | If the system is currently using emergency heat | R |
@ -138,7 +139,7 @@ Another way to get the deviceId and structureId values is by querying the Nest A
### demo.things:
```
Bridge nest:account:demo_account [ productId="8fdf9885-ca07-4252-1aa3-f3d5ca9589e0", productSecret="QITLR3iyUlWaj9dbvCxsCKp4f", accessToken="c.6rse1xtRk2UANErcY0XazaqPHgbvSSB6owOrbZrZ6IXrmqhsr9QTmcfaiLX1l0ULvlI5xLp01xmKeiojHqozLQbNM8yfITj1LSdK28zsUft1aKKH2mDlOeoqZKBdVIsxyZk4orH0AvKEZ5aY", refreshInterval="120" ] {
Bridge nest:account:demo_account [ productId="8fdf9885-ca07-4252-1aa3-f3d5ca9589e0", productSecret="QITLR3iyUlWaj9dbvCxsCKp4f", accessToken="c.6rse1xtRk2UANErcY0XazaqPHgbvSSB6owOrbZrZ6IXrmqhsr9QTmcfaiLX1l0ULvlI5xLp01xmKeiojHqozLQbNM8yfITj1LSdK28zsUft1aKKH2mDlOeoqZKBdVIsxyZk4orH0AvKEZ5aY" ] {
camera fish_cam [ deviceId="qw0NNE8ruxA9AGJkTaFH3KeUiJaONWKiH9Gh3RwwhHClonIexTtufQ" ]
smoke_detector hallway_smoke [ deviceId="Tzvibaa3lLKnHpvpi9OQeCI_z5rfkBAV" ]
structure home [ structureId="20wKjydArmMV3kOluTA7JRcZg8HKBzTR-G_2nRXuIN1Bd6laGLOJQw" ]
@ -180,6 +181,7 @@ Number Thermostat_Max_SP "Max Set Point [%.1f °C]" { channel="nest
Number Thermostat_Min_SP "Min Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:min_set_point" }
String Thermostat_Mode "Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:mode" }
String Thermostat_PreviousMode "Previous Mode [%s]" { channel="nest:thermostat:demo_account:living_thermostat:previous_mode" }
Number Thermostat_Set_Point "Set Point [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:set_point" }
Switch Thermostat_SunlightCA "Sunlight Correction Active" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_active" }
Switch Thermostat_SunlightCE "Sunlight Correction Enabled" { channel="nest:thermostat:demo_account:living_thermostat:sunlight_correction_enabled" }
Number Thermostat_Temperature "Temperature [%.1f °C]" { channel="nest:thermostat:demo_account:living_thermostat:temperature" }

View File

@ -41,6 +41,8 @@ allowSystemPings=false
Auto discovery can be used to scan the local network for **pingdevice** things by sending a ping to every IP on the network. Some network tools will identify this as a network intruder alarm, therefore automatic background discovery is disabled and a manual scan needs to be issued.
Please note: things discovered by the network binding will be provided with a time to live (TTL) and will automatically disappear from the Inbox after 10 minutes.
## Thing Configuration
```

View File

@ -44,6 +44,7 @@ This binding can discover the supported Onkyo AV Receivers. At the moment only t
* TX-NR656
* TX-NR717
* TX-NR727
* TX-NR737
* TX-NR747
* TX-NR818
* TX-NR828

View File

@ -23,6 +23,8 @@ This binding allows openHAB to be integrated [RWE SmartHome](https://www.rwe-sma
1. This binding is based on an unofficial interface, which may be changed or even closed by RWE at any time.
1. The binding only runs with TLSv1, which is default until Java 1.7. If you use Java 1.8, you have to add `-Djdk.tls.client.protocols=TLSv1` to the `java` command in your start.sh/start.bat file. In openHAB 2, the `java` command is somewhere at the end of `runtime/karaf/bin/karaf`.
**Warning:** Using TLSv1 as mentioned above can cause troubles for other bindings that rely on a newer TLS version.
## Binding Configuration
This binding can be configured in the file `services/rwesmarthome.cfg`.

View File

@ -1,9 +1,9 @@
---
id: tradfri
label: Trådfri
title: Trådfri - Bindings
label: TRÅDFRI
title: TRÅDFRI - Bindings
type: binding
description: "This binding integrates the IKEA Trådfri gateway and devices connected to it (such as dimmable LED bulbs)."
description: "This binding integrates the IKEA TRÅDFRI gateway and devices connected to it (such as dimmable LED bulbs)."
since: 2x
logo: images/addons/tradfri.png
install: auto
@ -13,9 +13,9 @@ install: auto
{% include base.html %}
# Trådfri Binding
# TRÅDFRI Binding
This binding integrates the IKEA Trådfri gateway and devices connected to it (such as dimmable LED bulbs).
This binding integrates the IKEA TRÅDFRI gateway and devices connected to it (such as dimmable LED bulbs).
## Supported Things

View File

@ -1,40 +1,22 @@
#!/bin/sh
#!/usr/bin/env bash
set -e
for file in "${1}"*.svg; do
if [[ "${file}" != 'none'* ]]; then
png="${file%.svg}.png"
png=`echo "${file}" | sed s/.svg/.png/`
# Clean up SVG file.
svgcleaner --remove-declarations=false --indent=2 "${file}" "${file}"
# format SVG file
if type xmllint &>/dev/null; then
xmllint "${file}" -o "${file}" --pretty 1
else
echo "error: xmllint not installed" 2>1
exit 1
fi
# convert SVG file to PNG
# Convert SVG file to PNG.
if [ ! -f "${png}" ]; then
if type rsvg-convert &>/dev/null; then
# dependency: librsvg
echo "rsvg-convert: converting ${file}"
rsvg-convert "${file}" -o "${png}"
elif type svgexport &>/dev/null; then
# dependency: svgexport (via npm)
echo "svgexport: converting ${file}"
svgexport "${file}" "${png}"
else
echo "error: no SVG converter installed" 2>1
exit 1
fi
rsvg-convert "${file}" -o "${png}"
fi
# Losslessly minify PNG file.
while pngout "${png}" -kbKGD; do
: # Minify until maximum compression is reached.
done
fi
done

View File

@ -150,3 +150,7 @@ cp -f clock.svg time.svg
cp -f video.png mediacontrol.png
cp -f video.svg mediacontrol.svg
cp -f soundvolume.png mutevolume.png
cp -f soundvolume_mute.png mutevolume-on.png
cp -f soundvolume.png mutevolume-off.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 551 B

View File

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47-.32-.32-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11.32-.32.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47c.32.32.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48" style="fill:#282828"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76-.23.23-.46.33-.76.33-.3 0-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z"/>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47s-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11s.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48z" fill="#dcdcdc"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76s-.46.33-.76.33-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z" fill="#aaa"/>
</svg>

Before

Width:  |  Height:  |  Size: 997 B

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,11 +1,11 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47-.32-.32-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11.32-.32.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47c.32.32.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48" style="fill:#282828"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76-.23.23-.46.33-.76.33-.3 0-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62-.41.41-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46.41.42.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62.56 0 1.05-.21 1.46-.62s.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32 0 1.53-.44 2.98-1.29 4.31-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14" style="fill:#282828"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04 0 1.46-.4 2.77-1.21 4.03-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31 0-.89-.17-1.67-.5-2.31-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6-.41.4-.61.89-.61 1.47 0 .45.13.84.39 1.15.26.31.57.58.94.81.37.23.73.47 1.1.74.37.27.68.65.94 1.15.26.5.39 1.11.39 1.84 0 .73-.13 1.35-.39 1.84-.26.5-.57.88-.94 1.15-.37.27-.73.52-1.1.74-.37.23-.68.5-.94.81-.26.31-.39.7-.39 1.15 0 .58.2 1.07.61 1.47.41.4.89.6 1.46.6.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02.91-1.42 1.37-2.94 1.37-4.58s-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z"/>
<path d="m40.16 46.9c-.45 0-.82-.15-1.13-.47-.32-.31-.47-.68-.47-1.1 0-.65.31-1.12.99-1.46 1.24-.64 2.07-1.12 2.53-1.47 1.65-1.2 2.96-2.74 3.88-4.56.93-1.82 1.4-3.79 1.4-5.84s-.47-4.02-1.4-5.84c-.93-1.82-2.23-3.35-3.89-4.56-.45-.34-1.28-.82-2.52-1.46-.68-.35-.99-.81-.99-1.46 0-.43.15-.79.47-1.1.31-.32.68-.47 1.1-.47.22 0 .44.04.66.13 2.9 1.22 5.27 3.21 7.04 5.91 1.77 2.7 2.67 5.68 2.67 8.86s-.9 6.17-2.67 8.86c-1.77 2.7-4.14 4.68-7.06 5.91-.2.07-.41.12-.61.12" style="fill:#282828"/>
<path d="m40.13 17.6c.16 0 .32.03.45.08 2.82 1.19 5.12 3.11 6.83 5.72 1.72 2.62 2.59 5.51 2.59 8.6s-.87 5.98-2.59 8.59c-1.71 2.61-4.01 4.54-6.8 5.71-.16.06-.32.1-.45.1-.32 0-.56-.1-.78-.32-.22-.22-.32-.45-.32-.75 0-.34.09-.7.72-1.02 1.27-.66 2.12-1.15 2.59-1.5 1.72-1.25 3.08-2.85 4.04-4.74.96-1.89 1.45-3.93 1.45-6.07s-.49-4.17-1.45-6.07c-.96-1.89-2.32-3.48-4.03-4.73-.48-.36-1.33-.85-2.6-1.51-.63-.32-.72-.68-.72-1.02 0-.3.1-.53.32-.75.22-.22.46-.32.75-.32m0-1c-.56 0-1.05.2-1.46.61-.41.41-.61.89-.61 1.46 0 .84.42 1.48 1.26 1.91 1.21.63 2.03 1.1 2.46 1.42 1.6 1.16 2.84 2.63 3.74 4.38.89 1.76 1.34 3.63 1.34 5.61s-.45 3.85-1.34 5.61c-.89 1.76-2.14 3.22-3.74 4.38-.43.32-1.25.8-2.46 1.42-.84.43-1.26 1.07-1.26 1.91 0 .56.2 1.05.61 1.46.41.41.91.61 1.49.61.26 0 .53-.05.81-.16 3.02-1.27 5.45-3.3 7.28-6.1 1.83-2.77 2.75-5.82 2.75-9.12s-.92-6.35-2.75-9.14c-1.83-2.79-4.26-4.83-7.28-6.1-.28-.1-.56-.16-.84-.16z"/>
<path d="m43.12 54.5c-.43 0-.79-.15-1.1-.47s-.47-.68-.47-1.1c0-.59.33-1.08 1.02-1.48.13-.08.36-.18.67-.31.36-.15.62-.27.78-.37 1-.54 1.91-1.11 2.7-1.68 2.71-2 4.85-4.53 6.36-7.52 1.52-2.99 2.29-6.21 2.29-9.57s-.77-6.58-2.29-9.57c-1.52-2.99-3.66-5.52-6.36-7.52-.79-.57-1.7-1.14-2.71-1.69-.15-.09-.41-.21-.77-.36-.31-.13-.53-.23-.67-.31-.68-.4-1.01-.88-1.01-1.47 0-.43.15-.79.47-1.1s.68-.47 1.1-.47c.22 0 .44.04.66.13 4.42 1.91 8.02 4.93 10.7 8.98 2.67 4.05 4.03 8.55 4.03 13.39s-1.35 9.34-4.03 13.39c-2.67 4.05-6.28 7.07-10.71 8.99-.22.07-.45.11-.66.11" style="fill:#282828"/>
<path d="m43.12 10c.16 0 .32.03.45.08 4.35 1.87 7.88 4.84 10.5 8.8 2.6 3.97 3.93 8.38 3.93 13.12 0 4.74-1.33 9.15-3.94 13.12-2.62 3.97-6.15 6.93-10.46 8.79-.17.06-.32.1-.48.1-.3 0-.53-.1-.75-.32-.22-.22-.32-.45-.32-.75 0-.28.09-.64.76-1.04.06-.04.23-.12.62-.29.38-.16.65-.29.82-.38 1.02-.56 1.95-1.13 2.77-1.72 2.77-2.05 4.96-4.64 6.51-7.69 1.55-3.06 2.34-6.36 2.34-9.8s-.79-6.74-2.34-9.8c-1.55-3.06-3.74-5.65-6.52-7.7-.81-.58-1.74-1.16-2.74-1.71-.19-.11-.46-.24-.84-.39-.39-.16-.55-.25-.61-.28-.68-.4-.77-.77-.77-1.05 0-.3.1-.53.32-.75.22-.24.45-.34.75-.34m0-1c-.56 0-1.05.2-1.46.61-.41.41-.61.89-.61 1.46 0 .78.42 1.41 1.26 1.91.15.09.39.2.73.34.33.14.58.25.73.34.99.54 1.88 1.09 2.65 1.65 2.65 1.96 4.72 4.41 6.21 7.34 1.49 2.93 2.23 6.05 2.23 9.35s-.74 6.42-2.23 9.35c-1.49 2.93-3.56 5.38-6.21 7.34-.78.56-1.66 1.11-2.65 1.65-.15.09-.39.2-.73.34-.33.14-.58.25-.73.34-.84.5-1.26 1.13-1.26 1.91 0 .56.2 1.05.61 1.46.41.41.9.61 1.46.61.28 0 .56-.05.84-.16 4.55-1.96 8.2-5.02 10.93-9.17 2.74-4.15 4.11-8.71 4.11-13.67 0-4.96-1.37-9.52-4.11-13.67-2.74-4.15-6.38-7.21-10.93-9.17-.28-.11-.56-.16-.84-.16z"/>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47s-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11s.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48z" fill="#dcdcdc"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76s-.46.33-.76.33-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46.41.42.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z" fill="#aaa"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32s-.44 2.98-1.29 4.31c-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14z" fill="#1e82ff"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04s-.4 2.77-1.21 4.03c-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31 0-.89-.17-1.67-.5-2.31-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6s-.61.89-.61 1.47c0 .45.13.84.39 1.15s.57.58.94.81.73.47 1.1.74.68.65.94 1.15.39 1.11.39 1.84-.13 1.35-.39 1.84c-.26.5-.57.88-.94 1.15s-.73.52-1.1.74c-.37.23-.68.5-.94.81s-.39.7-.39 1.15c0 .58.2 1.07.61 1.47s.89.6 1.46.6c.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02.91-1.42 1.37-2.94 1.37-4.58s-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z" fill="#1271d8"/>
<path d="m40.16 46.9c-.45 0-.82-.15-1.13-.47-.32-.31-.47-.68-.47-1.1 0-.65.31-1.12.99-1.46 1.24-.64 2.07-1.12 2.53-1.47 1.65-1.2 2.96-2.74 3.88-4.56.93-1.82 1.4-3.79 1.4-5.84s-.47-4.02-1.4-5.84-2.23-3.35-3.89-4.56c-.45-.34-1.28-.82-2.52-1.46-.68-.35-.99-.81-.99-1.46 0-.43.15-.79.47-1.1.31-.32.68-.47 1.1-.47.22 0 .44.04.66.13 2.9 1.22 5.27 3.21 7.04 5.91s2.67 5.68 2.67 8.86-.9 6.17-2.67 8.86c-1.77 2.7-4.14 4.68-7.06 5.91-.2.07-.41.12-.61.12z" fill="#1e82ff"/>
<path d="m40.13 17.6c.16 0 .32.03.45.08 2.82 1.19 5.12 3.11 6.83 5.72 1.72 2.62 2.59 5.51 2.59 8.6s-.87 5.98-2.59 8.59c-1.71 2.61-4.01 4.54-6.8 5.71-.16.06-.32.1-.45.1-.32 0-.56-.1-.78-.32s-.32-.45-.32-.75c0-.34.09-.7.72-1.02 1.27-.66 2.12-1.15 2.59-1.5 1.72-1.25 3.08-2.85 4.04-4.74s1.45-3.93 1.45-6.07-.49-4.17-1.45-6.07c-.96-1.89-2.32-3.48-4.03-4.73-.48-.36-1.33-.85-2.6-1.51-.63-.32-.72-.68-.72-1.02 0-.3.1-.53.32-.75s.46-.32.75-.32m0-1c-.56 0-1.05.2-1.46.61s-.61.89-.61 1.46c0 .84.42 1.48 1.26 1.91 1.21.63 2.03 1.1 2.46 1.42 1.6 1.16 2.84 2.63 3.74 4.38.89 1.76 1.34 3.63 1.34 5.61s-.45 3.85-1.34 5.61-2.14 3.22-3.74 4.38c-.43.32-1.25.8-2.46 1.42-.84.43-1.26 1.07-1.26 1.91 0 .56.2 1.05.61 1.46s.91.61 1.49.61c.26 0 .53-.05.81-.16 3.02-1.27 5.45-3.3 7.28-6.1 1.83-2.77 2.75-5.82 2.75-9.12s-.92-6.35-2.75-9.14-4.26-4.83-7.28-6.1c-.28-.1-.56-.16-.84-.16z" fill="#1271d8"/>
<path d="m43.12 54.5c-.43 0-.79-.15-1.1-.47s-.47-.68-.47-1.1c0-.59.33-1.08 1.02-1.48.13-.08.36-.18.67-.31.36-.15.62-.27.78-.37 1-.54 1.91-1.11 2.7-1.68 2.71-2 4.85-4.53 6.36-7.52 1.52-2.99 2.29-6.21 2.29-9.57s-.77-6.58-2.29-9.57-3.66-5.52-6.36-7.52c-.79-.57-1.7-1.14-2.71-1.69-.15-.09-.41-.21-.77-.36-.31-.13-.53-.23-.67-.31-.68-.4-1.01-.88-1.01-1.47 0-.43.15-.79.47-1.1s.68-.47 1.1-.47c.22 0 .44.04.66.13 4.42 1.91 8.02 4.93 10.7 8.98 2.67 4.05 4.03 8.55 4.03 13.39s-1.35 9.34-4.03 13.39c-2.67 4.05-6.28 7.07-10.71 8.99-.22.07-.45.11-.66.11z" fill="#1e82ff"/>
<path d="m43.12 10c .16 0 .32.03.45.08 4.35 1.87 7.88 4.84 10.5 8.8 2.6 3.97 3.93 8.38 3.93 13.12s-1.33 9.15-3.94 13.12c-2.62 3.97-6.15 6.93-10.46 8.79-.17.06-.32.1-.48.1-.3 0-.53-.1-.75-.32s-.32-.45-.32-.75c0-.28.09-.64.76-1.04.06-.04.23-.12.62-.29.38-.16.65-.29.82-.38 1.02-.56 1.95-1.13 2.77-1.72 2.77-2.05 4.96-4.64 6.51-7.69 1.55-3.06 2.34-6.36 2.34-9.8s-.79-6.74-2.34-9.8-3.74-5.65-6.52-7.7c-.81-.58-1.74-1.16-2.74-1.71-.19-.11-.46-.24-.84-.39-.39-.16-.55-.25-.61-.28-.68-.4-.77-.77-.77-1.05 0-.3.1-.53.32-.75.22-.24.45-.34.75-.34m0-1c-.56 0-1.05.2-1.46.61s-.61.89-.61 1.46c0 .78.42 1.41 1.26 1.91.15.09.39.2.73.34.33.14.58.25.73.34.99.54 1.88 1.09 2.65 1.65 2.65 1.96 4.72 4.41 6.21 7.34s2.23 6.05 2.23 9.35-.74 6.42-2.23 9.35-3.56 5.38-6.21 7.34c-.78.56-1.66 1.11-2.65 1.65-.15.09-.39.2-.73.34-.33.14-.58.25-.73.34-.84.5-1.26 1.13-1.26 1.91 0 .56.2 1.05.61 1.46s.9.61 1.46.61c.28 0 .56-.05.84-.16 4.55-1.96 8.2-5.02 10.93-9.17 2.74-4.15 4.11-8.71 4.11-13.67s-1.37-9.52-4.11-13.67-6.38-7.21-10.93-9.17c-.28-.11-.56-.16-.84-.16z" fill="#1271d8"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 922 B

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47-.32-.32-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11.32-.32.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47c.32.32.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48" style="fill:#282828"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76-.23.23-.46.33-.76.33s-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62.56 0 1.05-.21 1.46-.62.41-.41.62-.9.62-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.4-.42-.89-.62-1.45-.62z"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32 0 1.53-.44 2.98-1.29 4.31-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14" style="fill:#282828"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04 0 1.46-.4 2.77-1.21 4.03-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31s-.17-1.67-.5-2.31c-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6-.41.4-.61.89-.61 1.47 0 .45.13.84.39 1.15.26.31.57.58.94.81.37.23.73.47 1.1.74.37.27.68.65.94 1.15.26.5.39 1.11.39 1.84s-.13 1.35-.39 1.84c-.26.5-.57.88-.94 1.15-.37.27-.73.52-1.1.74s-.68.5-.94.81-.39.7-.39 1.15c0 .58.2 1.07.61 1.47.41.4.89.6 1.46.6.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02s1.37-2.94 1.37-4.58-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z"/>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47s-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11s.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48z" fill="#dcdcdc"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76s-.46.33-.76.33-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.62-.9.62-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.4-.42-.89-.62-1.45-.62z" fill="#aaa"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32s-.44 2.98-1.29 4.31c-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14z" fill="#1e82ff"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04s-.4 2.77-1.21 4.03c-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31s-.17-1.67-.5-2.31c-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6s-.61.89-.61 1.47c0 .45.13.84.39 1.15s.57.58.94.81.73.47 1.1.74.68.65.94 1.15.39 1.11.39 1.84-.13 1.35-.39 1.84c-.26.5-.57.88-.94 1.15s-.73.52-1.1.74-.68.5-.94.81-.39.7-.39 1.15c0 .58.2 1.07.61 1.47s.89.6 1.46.6c.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02s1.37-2.94 1.37-4.58-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z" fill="#1271d8"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 729 B

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,9 +1,9 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47-.32-.32-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11.32-.32.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47c.32.32.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48" style="fill:#282828"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76-.23.23-.46.33-.76.33-.3 0-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62.56 0 1.05-.21 1.46-.62s.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32 0 1.53-.44 2.98-1.29 4.31-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14" style="fill:#282828"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04 0 1.46-.4 2.77-1.21 4.03-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31 0-.89-.17-1.67-.5-2.31-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6-.41.4-.61.89-.61 1.47 0 .45.13.84.39 1.15.26.31.57.58.94.81.37.23.73.47 1.1.74.37.27.68.65.94 1.15.26.5.39 1.11.39 1.84 0 .73-.13 1.35-.39 1.84-.26.5-.57.88-.94 1.15-.37.27-.73.52-1.1.74-.37.23-.68.5-.94.81-.26.31-.39.7-.39 1.15 0 .58.2 1.07.61 1.47.41.4.89.6 1.46.6.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02s1.37-2.94 1.37-4.58-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z"/>
<path d="m40.16 46.9c-.45 0-.82-.15-1.13-.47-.32-.31-.47-.68-.47-1.1 0-.65.31-1.12.99-1.46 1.24-.64 2.07-1.12 2.53-1.47 1.65-1.2 2.96-2.74 3.88-4.56.93-1.82 1.4-3.79 1.4-5.84s-.47-4.02-1.4-5.84c-.93-1.82-2.23-3.35-3.89-4.56-.45-.34-1.28-.82-2.52-1.46-.68-.35-.99-.81-.99-1.46 0-.43.15-.79.47-1.1.31-.32.68-.47 1.1-.47.22 0 .44.04.66.13 2.9 1.22 5.27 3.21 7.04 5.91 1.77 2.7 2.67 5.68 2.67 8.86s-.9 6.17-2.67 8.86c-1.77 2.7-4.14 4.68-7.06 5.91-.2.07-.41.12-.61.12" style="fill:#282828"/>
<path d="m40.13 17.6c.16 0 .32.03.45.08 2.82 1.19 5.12 3.11 6.83 5.72 1.72 2.62 2.59 5.51 2.59 8.6s-.87 5.98-2.59 8.59c-1.71 2.61-4.01 4.54-6.8 5.71-.16.06-.32.1-.45.1-.32 0-.56-.1-.78-.32-.22-.22-.32-.45-.32-.75 0-.34.09-.7.72-1.02 1.27-.66 2.12-1.15 2.59-1.5 1.72-1.25 3.08-2.85 4.04-4.74.96-1.89 1.45-3.93 1.45-6.07s-.49-4.17-1.45-6.07c-.96-1.89-2.32-3.48-4.03-4.73-.48-.36-1.33-.85-2.6-1.51-.63-.32-.72-.68-.72-1.02 0-.3.1-.53.32-.75.22-.22.46-.32.75-.32m0-1c-.56 0-1.05.2-1.46.61-.41.41-.61.89-.61 1.46 0 .84.42 1.48 1.26 1.91 1.21.63 2.03 1.1 2.46 1.42 1.6 1.16 2.84 2.63 3.74 4.38.89 1.76 1.34 3.63 1.34 5.61s-.45 3.85-1.34 5.61c-.89 1.76-2.14 3.22-3.74 4.38-.43.32-1.25.8-2.46 1.42-.84.43-1.26 1.07-1.26 1.91 0 .56.2 1.05.61 1.46.41.41.91.61 1.49.61.26 0 .53-.05.81-.16 3.02-1.27 5.45-3.3 7.28-6.1 1.83-2.77 2.75-5.82 2.75-9.12s-.92-6.35-2.75-9.14c-1.83-2.79-4.26-4.83-7.28-6.1-.28-.1-.56-.16-.84-.16z"/>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47s-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11s.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48z" fill="#dcdcdc"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76s-.46.33-.76.33-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z" fill="#aaa"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32s-.44 2.98-1.29 4.31c-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14z" fill="#1e82ff"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04s-.4 2.77-1.21 4.03c-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31 0-.89-.17-1.67-.5-2.31-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6s-.61.89-.61 1.47c0 .45.13.84.39 1.15s.57.58.94.81.73.47 1.1.74.68.65.94 1.15.39 1.11.39 1.84-.13 1.35-.39 1.84c-.26.5-.57.88-.94 1.15s-.73.52-1.1.74c-.37.23-.68.5-.94.81s-.39.7-.39 1.15c0 .58.2 1.07.61 1.47s.89.6 1.46.6c.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02s1.37-2.94 1.37-4.58-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z" fill="#1271d8"/>
<path d="m40.16 46.9c-.45 0-.82-.15-1.13-.47-.32-.31-.47-.68-.47-1.1 0-.65.31-1.12.99-1.46 1.24-.64 2.07-1.12 2.53-1.47 1.65-1.2 2.96-2.74 3.88-4.56.93-1.82 1.4-3.79 1.4-5.84s-.47-4.02-1.4-5.84-2.23-3.35-3.89-4.56c-.45-.34-1.28-.82-2.52-1.46-.68-.35-.99-.81-.99-1.46 0-.43.15-.79.47-1.1.31-.32.68-.47 1.1-.47.22 0 .44.04.66.13 2.9 1.22 5.27 3.21 7.04 5.91s2.67 5.68 2.67 8.86-.9 6.17-2.67 8.86c-1.77 2.7-4.14 4.68-7.06 5.91-.2.07-.41.12-.61.12z" fill="#1e82ff"/>
<path d="m40.13 17.6c.16 0 .32.03.45.08 2.82 1.19 5.12 3.11 6.83 5.72 1.72 2.62 2.59 5.51 2.59 8.6s-.87 5.98-2.59 8.59c-1.71 2.61-4.01 4.54-6.8 5.71-.16.06-.32.1-.45.1-.32 0-.56-.1-.78-.32s-.32-.45-.32-.75c0-.34.09-.7.72-1.02 1.27-.66 2.12-1.15 2.59-1.5 1.72-1.25 3.08-2.85 4.04-4.74s1.45-3.93 1.45-6.07-.49-4.17-1.45-6.07c-.96-1.89-2.32-3.48-4.03-4.73-.48-.36-1.33-.85-2.6-1.51-.63-.32-.72-.68-.72-1.02 0-.3.1-.53.32-.75s.46-.32.75-.32m0-1c-.56 0-1.05.2-1.46.61s-.61.89-.61 1.46c0 .84.42 1.48 1.26 1.91 1.21.63 2.03 1.1 2.46 1.42 1.6 1.16 2.84 2.63 3.74 4.38.89 1.76 1.34 3.63 1.34 5.61s-.45 3.85-1.34 5.61-2.14 3.22-3.74 4.38c-.43.32-1.25.8-2.46 1.42-.84.43-1.26 1.07-1.26 1.91 0 .56.2 1.05.61 1.46s.91.61 1.49.61c.26 0 .53-.05.81-.16 3.02-1.27 5.45-3.3 7.28-6.1 1.83-2.77 2.75-5.82 2.75-9.12s-.92-6.35-2.75-9.14-4.26-4.83-7.28-6.1c-.28-.1-.56-.16-.84-.16z" fill="#1271d8"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,11 +1,11 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47-.32-.32-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11.32-.32.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47c.32.32.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48" style="fill:#282828"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76-.23.23-.46.33-.76.33-.3 0-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62-.41.41-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46.41.42.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62.56 0 1.05-.21 1.46-.62s.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32 0 1.53-.44 2.98-1.29 4.31-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14" style="fill:#282828"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04 0 1.46-.4 2.77-1.21 4.03-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31 0-.89-.17-1.67-.5-2.31-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6-.41.4-.61.89-.61 1.47 0 .45.13.84.39 1.15.26.31.57.58.94.81.37.23.73.47 1.1.74.37.27.68.65.94 1.15.26.5.39 1.11.39 1.84 0 .73-.13 1.35-.39 1.84-.26.5-.57.88-.94 1.15-.37.27-.73.52-1.1.74-.37.23-.68.5-.94.81-.26.31-.39.7-.39 1.15 0 .58.2 1.07.61 1.47.41.4.89.6 1.46.6.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02.91-1.42 1.37-2.94 1.37-4.58s-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z"/>
<path d="m40.16 46.9c-.45 0-.82-.15-1.13-.47-.32-.31-.47-.68-.47-1.1 0-.65.31-1.12.99-1.46 1.24-.64 2.07-1.12 2.53-1.47 1.65-1.2 2.96-2.74 3.88-4.56.93-1.82 1.4-3.79 1.4-5.84s-.47-4.02-1.4-5.84c-.93-1.82-2.23-3.35-3.89-4.56-.45-.34-1.28-.82-2.52-1.46-.68-.35-.99-.81-.99-1.46 0-.43.15-.79.47-1.1.31-.32.68-.47 1.1-.47.22 0 .44.04.66.13 2.9 1.22 5.27 3.21 7.04 5.91 1.77 2.7 2.67 5.68 2.67 8.86s-.9 6.17-2.67 8.86c-1.77 2.7-4.14 4.68-7.06 5.91-.2.07-.41.12-.61.12" style="fill:#282828"/>
<path d="m40.13 17.6c.16 0 .32.03.45.08 2.82 1.19 5.12 3.11 6.83 5.72 1.72 2.62 2.59 5.51 2.59 8.6s-.87 5.98-2.59 8.59c-1.71 2.61-4.01 4.54-6.8 5.71-.16.06-.32.1-.45.1-.32 0-.56-.1-.78-.32-.22-.22-.32-.45-.32-.75 0-.34.09-.7.72-1.02 1.27-.66 2.12-1.15 2.59-1.5 1.72-1.25 3.08-2.85 4.04-4.74.96-1.89 1.45-3.93 1.45-6.07s-.49-4.17-1.45-6.07c-.96-1.89-2.32-3.48-4.03-4.73-.48-.36-1.33-.85-2.6-1.51-.63-.32-.72-.68-.72-1.02 0-.3.1-.53.32-.75.22-.22.46-.32.75-.32m0-1c-.56 0-1.05.2-1.46.61-.41.41-.61.89-.61 1.46 0 .84.42 1.48 1.26 1.91 1.21.63 2.03 1.1 2.46 1.42 1.6 1.16 2.84 2.63 3.74 4.38.89 1.76 1.34 3.63 1.34 5.61s-.45 3.85-1.34 5.61c-.89 1.76-2.14 3.22-3.74 4.38-.43.32-1.25.8-2.46 1.42-.84.43-1.26 1.07-1.26 1.91 0 .56.2 1.05.61 1.46.41.41.91.61 1.49.61.26 0 .53-.05.81-.16 3.02-1.27 5.45-3.3 7.28-6.1 1.83-2.77 2.75-5.82 2.75-9.12s-.92-6.35-2.75-9.14c-1.83-2.79-4.26-4.83-7.28-6.1-.28-.1-.56-.16-.84-.16z"/>
<path d="m43.12 54.5c-.43 0-.79-.15-1.1-.47s-.47-.68-.47-1.1c0-.59.33-1.08 1.02-1.48.13-.08.36-.18.67-.31.36-.15.62-.27.78-.37 1-.54 1.91-1.11 2.7-1.68 2.71-2 4.85-4.53 6.36-7.52 1.52-2.99 2.29-6.21 2.29-9.57s-.77-6.58-2.29-9.57c-1.52-2.99-3.66-5.52-6.36-7.52-.79-.57-1.7-1.14-2.71-1.69-.15-.09-.41-.21-.77-.36-.31-.13-.53-.23-.67-.31-.68-.4-1.01-.88-1.01-1.47 0-.43.15-.79.47-1.1s.68-.47 1.1-.47c.22 0 .44.04.66.13 4.42 1.91 8.02 4.93 10.7 8.98 2.67 4.05 4.03 8.55 4.03 13.39s-1.35 9.34-4.03 13.39c-2.67 4.05-6.28 7.07-10.71 8.99-.22.07-.45.11-.66.11" style="fill:#282828"/>
<path d="m43.12 10c.16 0 .32.03.45.08 4.35 1.87 7.88 4.84 10.5 8.8 2.6 3.97 3.93 8.38 3.93 13.12 0 4.74-1.33 9.15-3.94 13.12-2.62 3.97-6.15 6.93-10.46 8.79-.17.06-.32.1-.48.1-.3 0-.53-.1-.75-.32-.22-.22-.32-.45-.32-.75 0-.28.09-.64.76-1.04.06-.04.23-.12.62-.29.38-.16.65-.29.82-.38 1.02-.56 1.95-1.13 2.77-1.72 2.77-2.05 4.96-4.64 6.51-7.69 1.55-3.06 2.34-6.36 2.34-9.8s-.79-6.74-2.34-9.8c-1.55-3.06-3.74-5.65-6.52-7.7-.81-.58-1.74-1.16-2.74-1.71-.19-.11-.46-.24-.84-.39-.39-.16-.55-.25-.61-.28-.68-.4-.77-.77-.77-1.05 0-.3.1-.53.32-.75.22-.24.45-.34.75-.34m0-1c-.56 0-1.05.2-1.46.61-.41.41-.61.89-.61 1.46 0 .78.42 1.41 1.26 1.91.15.09.39.2.73.34.33.14.58.25.73.34.99.54 1.88 1.09 2.65 1.65 2.65 1.96 4.72 4.41 6.21 7.34 1.49 2.93 2.23 6.05 2.23 9.35s-.74 6.42-2.23 9.35c-1.49 2.93-3.56 5.38-6.21 7.34-.78.56-1.66 1.11-2.65 1.65-.15.09-.39.2-.73.34-.33.14-.58.25-.73.34-.84.5-1.26 1.13-1.26 1.91 0 .56.2 1.05.61 1.46.41.41.9.61 1.46.61.28 0 .56-.05.84-.16 4.55-1.96 8.2-5.02 10.93-9.17 2.74-4.15 4.11-8.71 4.11-13.67 0-4.96-1.37-9.52-4.11-13.67-2.74-4.15-6.38-7.21-10.93-9.17-.28-.11-.56-.16-.84-.16z"/>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47s-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11s.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48z" fill="#dcdcdc"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76s-.46.33-.76.33-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46.41.42.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z" fill="#aaa"/>
<path d="m37.18 39.26c-.43 0-.79-.15-1.11-.46-.31-.3-.46-.67-.46-1.11 0-.34.09-.61.27-.83.22-.27.5-.51.82-.7.38-.23.76-.49 1.13-.77.43-.31.79-.76 1.09-1.32.29-.57.44-1.26.44-2.08s-.15-1.51-.44-2.08c-.29-.56-.66-1.01-1.09-1.32-.38-.28-.76-.53-1.13-.77-.32-.2-.59-.43-.82-.7-.18-.22-.27-.49-.27-.83 0-.45.15-.81.46-1.11.32-.31.68-.46 1.11-.46.24 0 .44.04.58.11 1.45.56 2.59 1.51 3.44 2.83.86 1.33 1.3 2.79 1.3 4.32s-.44 2.98-1.29 4.31c-.85 1.32-2 2.27-3.41 2.83-.18.11-.38.14-.62.14z" fill="#1e82ff"/>
<path d="m37.18 25.24c.22 0 .33.04.36.06l.04.02.04.02c1.32.51 2.35 1.36 3.16 2.62.82 1.26 1.22 2.58 1.22 4.04s-.4 2.77-1.21 4.03c-.81 1.25-1.85 2.11-3.17 2.64l-.04.02-.04.02c-.03.02-.14.06-.36.06-.3 0-.53-.1-.76-.31-.22-.21-.31-.44-.31-.76 0-.29.09-.43.16-.51.19-.23.42-.43.69-.6.39-.24.78-.5 1.17-.79.49-.36.9-.86 1.23-1.49.33-.64.5-1.41.5-2.31 0-.89-.17-1.67-.5-2.31-.33-.63-.74-1.13-1.23-1.49-.39-.28-.78-.55-1.17-.79-.27-.17-.51-.37-.69-.6-.07-.08-.16-.22-.16-.51 0-.31.1-.55.31-.76.22-.21.46-.3.76-.3m0-1c-.56 0-1.05.2-1.46.6s-.61.89-.61 1.47c0 .45.13.84.39 1.15s.57.58.94.81.73.47 1.1.74.68.65.94 1.15.39 1.11.39 1.84-.13 1.35-.39 1.84c-.26.5-.57.88-.94 1.15s-.73.52-1.1.74c-.37.23-.68.5-.94.81s-.39.7-.39 1.15c0 .58.2 1.07.61 1.47s.89.6 1.46.6c.32 0 .59-.05.81-.16 1.51-.6 2.72-1.61 3.64-3.02.91-1.42 1.37-2.94 1.37-4.58s-.46-3.17-1.37-4.59c-.92-1.42-2.13-2.43-3.64-3.01-.22-.11-.49-.16-.81-.16z" fill="#1271d8"/>
<path d="m40.16 46.9c-.45 0-.82-.15-1.13-.47-.32-.31-.47-.68-.47-1.1 0-.65.31-1.12.99-1.46 1.24-.64 2.07-1.12 2.53-1.47 1.65-1.2 2.96-2.74 3.88-4.56.93-1.82 1.4-3.79 1.4-5.84s-.47-4.02-1.4-5.84-2.23-3.35-3.89-4.56c-.45-.34-1.28-.82-2.52-1.46-.68-.35-.99-.81-.99-1.46 0-.43.15-.79.47-1.1.31-.32.68-.47 1.1-.47.22 0 .44.04.66.13 2.9 1.22 5.27 3.21 7.04 5.91s2.67 5.68 2.67 8.86-.9 6.17-2.67 8.86c-1.77 2.7-4.14 4.68-7.06 5.91-.2.07-.41.12-.61.12z" fill="#1e82ff"/>
<path d="m40.13 17.6c.16 0 .32.03.45.08 2.82 1.19 5.12 3.11 6.83 5.72 1.72 2.62 2.59 5.51 2.59 8.6s-.87 5.98-2.59 8.59c-1.71 2.61-4.01 4.54-6.8 5.71-.16.06-.32.1-.45.1-.32 0-.56-.1-.78-.32s-.32-.45-.32-.75c0-.34.09-.7.72-1.02 1.27-.66 2.12-1.15 2.59-1.5 1.72-1.25 3.08-2.85 4.04-4.74s1.45-3.93 1.45-6.07-.49-4.17-1.45-6.07c-.96-1.89-2.32-3.48-4.03-4.73-.48-.36-1.33-.85-2.6-1.51-.63-.32-.72-.68-.72-1.02 0-.3.1-.53.32-.75s.46-.32.75-.32m0-1c-.56 0-1.05.2-1.46.61s-.61.89-.61 1.46c0 .84.42 1.48 1.26 1.91 1.21.63 2.03 1.1 2.46 1.42 1.6 1.16 2.84 2.63 3.74 4.38.89 1.76 1.34 3.63 1.34 5.61s-.45 3.85-1.34 5.61-2.14 3.22-3.74 4.38c-.43.32-1.25.8-2.46 1.42-.84.43-1.26 1.07-1.26 1.91 0 .56.2 1.05.61 1.46s.91.61 1.49.61c.26 0 .53-.05.81-.16 3.02-1.27 5.45-3.3 7.28-6.1 1.83-2.77 2.75-5.82 2.75-9.12s-.92-6.35-2.75-9.14-4.26-4.83-7.28-6.1c-.28-.1-.56-.16-.84-.16z" fill="#1271d8"/>
<path d="m43.12 54.5c-.43 0-.79-.15-1.1-.47s-.47-.68-.47-1.1c0-.59.33-1.08 1.02-1.48.13-.08.36-.18.67-.31.36-.15.62-.27.78-.37 1-.54 1.91-1.11 2.7-1.68 2.71-2 4.85-4.53 6.36-7.52 1.52-2.99 2.29-6.21 2.29-9.57s-.77-6.58-2.29-9.57-3.66-5.52-6.36-7.52c-.79-.57-1.7-1.14-2.71-1.69-.15-.09-.41-.21-.77-.36-.31-.13-.53-.23-.67-.31-.68-.4-1.01-.88-1.01-1.47 0-.43.15-.79.47-1.1s.68-.47 1.1-.47c.22 0 .44.04.66.13 4.42 1.91 8.02 4.93 10.7 8.98 2.67 4.05 4.03 8.55 4.03 13.39s-1.35 9.34-4.03 13.39c-2.67 4.05-6.28 7.07-10.71 8.99-.22.07-.45.11-.66.11z" fill="#1e82ff"/>
<path d="m43.12 10c .16 0 .32.03.45.08 4.35 1.87 7.88 4.84 10.5 8.8 2.6 3.97 3.93 8.38 3.93 13.12s-1.33 9.15-3.94 13.12c-2.62 3.97-6.15 6.93-10.46 8.79-.17.06-.32.1-.48.1-.3 0-.53-.1-.75-.32s-.32-.45-.32-.75c0-.28.09-.64.76-1.04.06-.04.23-.12.62-.29.38-.16.65-.29.82-.38 1.02-.56 1.95-1.13 2.77-1.72 2.77-2.05 4.96-4.64 6.51-7.69 1.55-3.06 2.34-6.36 2.34-9.8s-.79-6.74-2.34-9.8-3.74-5.65-6.52-7.7c-.81-.58-1.74-1.16-2.74-1.71-.19-.11-.46-.24-.84-.39-.39-.16-.55-.25-.61-.28-.68-.4-.77-.77-.77-1.05 0-.3.1-.53.32-.75.22-.24.45-.34.75-.34m0-1c-.56 0-1.05.2-1.46.61s-.61.89-.61 1.46c0 .78.42 1.41 1.26 1.91.15.09.39.2.73.34.33.14.58.25.73.34.99.54 1.88 1.09 2.65 1.65 2.65 1.96 4.72 4.41 6.21 7.34s2.23 6.05 2.23 9.35-.74 6.42-2.23 9.35-3.56 5.38-6.21 7.34c-.78.56-1.66 1.11-2.65 1.65-.15.09-.39.2-.73.34-.33.14-.58.25-.73.34-.84.5-1.26 1.13-1.26 1.91 0 .56.2 1.05.61 1.46s.9.61 1.46.61c.28 0 .56-.05.84-.16 4.55-1.96 8.2-5.02 10.93-9.17 2.74-4.15 4.11-8.71 4.11-13.67s-1.37-9.52-4.11-13.67-6.38-7.21-10.93-9.17c-.28-.11-.56-.16-.84-.16z" fill="#1271d8"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

After

Width:  |  Height:  |  Size: 941 B

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47-.32-.32-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11.32-.32.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47c.32.32.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48" style="fill:#282828"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76-.23.23-.46.33-.76.33-.3 0-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z"/>
<path d="m47.05 34.12l-8.48 8.49-2.12-2.12 8.48-8.49-8.48-8.49 2.12-2.12 8.48 8.49 8.49-8.49 2.12 2.12-8.49 8.49 8.49 8.49-2.12 2.12z" style="fill:#282828"/>
<path d="m55.54 22.1l1.41 1.41-7.78 7.78-.7.71.71.71 7.78 7.78-1.41 1.41-7.78-7.78-.71-.71-.71.71-7.78 7.78-1.41-1.41 7.78-7.78.7-.71-.71-.71-7.78-7.78 1.41-1.41 7.78 7.78.71.71.71-.71 7.78-7.78m0-1.41l-8.49 8.49-8.49-8.49-2.83 2.83 8.5 8.48-8.49 8.49 2.83 2.83 8.49-8.49 8.49 8.49 2.83-2.83-8.5-8.49 8.49-8.49-2.83-2.82z"/>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<path d="m27.92 51.29c-.43 0-.79-.15-1.11-.47l-10.99-11.32h-8.74c-.43 0-.79-.15-1.11-.47s-.47-.68-.47-1.11v-11.84c0-.43.15-.79.47-1.11s.68-.47 1.11-.47h8.74l10.99-11.33c.31-.31.68-.47 1.11-.47s.79.15 1.11.47.47.68.47 1.11v35.42c0 .43-.15.79-.47 1.11-.32.33-.68.48-1.11.48z" fill="#dcdcdc"/>
<path d="m27.92 13.21c.3 0 .53.1.76.33.22.22.32.45.32.75v35.42c0 .3-.1.53-.33.76s-.46.33-.76.33-.53-.1-.75-.31l-10.83-11.19-.29-.3h-.42-8.54c-.3 0-.53-.1-.76-.33-.22-.22-.32-.45-.32-.75v-11.84c0-.3.1-.53.33-.76.22-.22.45-.32.75-.32h8.53.42l.29-.3 10.83-11.16c.23-.23.47-.33.77-.33m0-1c-.56 0-1.05.21-1.46.62l-10.85 11.17h-8.53c-.56 0-1.05.21-1.46.62s-.62.9-.62 1.46v11.83c0 .56.21 1.05.62 1.46s.9.63 1.46.63h8.53l10.84 11.17c.41.41.9.62 1.46.62s1.05-.21 1.46-.62.63-.9.63-1.46v-35.42c0-.56-.21-1.05-.62-1.46-.41-.42-.9-.62-1.46-.62z" fill="#aaa"/>
<path d="m47.05 34.12-8.48 8.49-2.12-2.12 8.48-8.49-8.48-8.49 2.12-2.12 8.48 8.49 8.49-8.49 2.12 2.12-8.49 8.49 8.49 8.49-2.12 2.12z" fill="#ff4545"/>
<path d="m55.54 22.1 1.41 1.41-7.78 7.78-.7.71.71.71 7.78 7.78-1.41 1.41-7.78-7.78-.71-.71-.71.71-7.78 7.78-1.41-1.41 7.78-7.78.7-.71-.71-.71-7.78-7.78 1.41-1.41 7.78 7.78.71.71.71-.71zm0-1.41-8.49 8.49-8.49-8.49-2.83 2.83 8.5 8.48-8.49 8.49 2.83 2.83 8.49-8.49 8.49 8.49 2.83-2.83-8.5-8.49 8.49-8.49z" fill="#d82b2b"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,115 @@
---
id: alexa-skill
label: Amazon Alexa Skill
title: Amazon Alexa Skill - System Integrations
type: io
description: "An intelligent voice guided personal assistant. Amazon Alexa became famous by the Amazon Echo speaker but is also available through independent solutions. The certified openHAB Alexa skill allows to naturally control the openHAB smart home by voiced commands."
since: 2x
install: manual
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Amazon Alexa Skill
An intelligent voice guided personal assistant. Amazon Alexa became famous by the Amazon Echo speaker but is also available through independent solutions. The certified openHAB Alexa skill allows to naturally control the openHAB smart home by voiced commands.
This page describes how to use the [openHAB Alexa Smart Home Skill](https://www.amazon.com/openHAB-Foundation/dp/B01MTY7Z5L).
The skill connects your openHAB setup through the [myopenHAB.org](http://myopenHAB.org) cloud service to Amazon Alexa.
(See [this document](https://github.com/openhab/openhab-alexa/blob/master/README.md) for other setup options and development information.)
With this skill you can control Items that respond to on/off and numeric commands.
The skill as well has limited support for thermostats.
Currently supported are the English (U.S.), English (U.K.), and German language.
## General Configuration Instructions
### Requirements
* [openHAB Cloud Connector](http://docs.openhab.org/addons/io/openhabcloud/readme.html) configured using myopenHAB.org
* Amazon account
* Amazon Echo, Amazon Echo Dot or compatible Alexa speaker or solution (e.g. [Reverb](https://reverb.ai/))
### 1. Item Configuration
Items are exposed to Alexa through the use of tags which follow the [HomeKit](http://docs.openhab.org/addons/io/homekit/readme.html) binding tagging syntax.
See the [Hue Emulation](http://docs.openhab.org/addons/io/hueemulation/readme.html) and [HomeKit Add-on](http://docs.openhab.org/addons/io/homekit/readme.html) documentation for details about tagging and available tags.
* **Items via .items - File**
See [Item Definition and Syntax](http://docs.openhab.org/configuration/items.html#item-definition-and-syntax)
Some examples of tagged items are:
```java
Switch Kitchen_Light "Kitchen Light" <light> (gKitchen) ["Lighting"] {channel="..."}
Dimmer Bedroom_Light "Bedroom Light" <light> (gBedroom) ["Lighting"] {channel="..."}
Number Bedroom_Temperature "Bedroom Temperature" (gBedroom) ["CurrentTemperature"] {channel="..."}
Group gDownstairsThermostat "Downstairs Thermostat" (gFF) ["Thermostat"]
Number Downstairs_Thermostat_CurrentTemp "Downstairs Thermostat Current Temperature" (gDownstairsThermostat) ["CurrentTemperature"]
Number Downstairs_Thermostat_Target_Temperature "Downstairs Thermostat Target Temperature" (gDownstairsThermostat) ["TargetTemperature"]
String Downstairs_Thermostat_Heating_Cooling_Mode "Downstairs Thermostat Heating/Cooling Mode" (gDownstairsThermostat) ["homekit:HeatingCooling"]
```
* **Other Configuration Options**
* The interactive REST API interface available through the openHAB 2 dashboard
* PaperUI does not yet allow manipulation of tags
#### Item Label Recommendation
Matching of voice commands to Items happens based on the Item label (e.g. "Kitchen Light").
It is therefore advisable, to choose labels that can be used to form natural commands.
As an example, compare "Alexa, turn on the *Kitchen Light*" vs. "Alexa, turn on the *Ground Floor LEDs Kitchen*".
In combination with the Alexa skill (and other similar services) you are thereby tempted to break with your naming scheme and introduce confusion into your setup.
openHAB Tip: YOu may define multiple Items bound to one channel.
Instead of manipulating the label of one single Item, you can define multiple Items specifically for voice commands.
See the following example:
```java
// Common/main Item bound to a binding channel
Switch Kitchen_Light "Ground Floor LEDs Kitchen" <light> (gKitchen) {channel="..."}
// Two Items with labels fitting for voice commands, bound to the same binding channel
Switch Kitchen_Light_A "Kitchen Light" ["Lighting"] {channel="..."}
Switch Kitchen_Light_A2 "Kitchen LEDs" ["Lighting"] {channel="..."}
```
### 2. Skill Configuration
1. Visit the [Alexa website](https://alexa.amazon.com/) or use the Alexa app on your mobile device.
2. Navigate to "Smart Home" -> "Configure Smart Home" and search for openHAB.
3. Follow the instructions to authorize Alexa using your myopenhab.org account.
### 3. Final Configuration
After tagging your items you can go back to the Alexa application and search for devices.
### Example Voice Commands
Here are some example voice commands:
<!-- https://www.amazon.com/gp/help/customer/display.html?nodeId=201751280 -->
- "Alexa, turn on the Kitchen Light"
- "Alexa, turn off the Kitchen Light"
- "Alexa, dim the Kitchen Lights to 30 percent"
- "Alexa, what's the downstairs temperature?"
- "Alexa, set the downstairs temperature to 22 degrees"
### Additional Comments
* Thermostats are created by adding the items of a thermostat to a group which has the tag "Thermostat" which follows the HomeKit binding configuration.
See [HomeKit Add-on](http://docs.openhab.org/addons/io/homekit/readme.html) for more information on how to configure thermostats.
* Channels which are tagged "CurrentTemperature" but NOT part of a thermostat group will be exposed as a Temperature item in Alexa and can be asked what their current value is ("Alex what is the upstairs temperature? ")
* By default all temperatures are in Celsius, for Fahrenheit add the tag `Fahrenheit` to the thermostat group item (which should also be tagged with `Thermostat`).
For standalone temperature channels, add it directly to the item.
* In addition you can tag Rollershutter items by `[ "Switchable" ]` and get support for `setPercentage`, `incrementPercentage`and `decrementPercentage` commands.
Example:
```java
Rollershutter Shutter_GF_Kitchen "Rollershutter Kitchen" [ "Switchable" ]
```
* With commands like `Alexa, set rollershutter kitchen to 100%` you control the rollershutter in the kitchen.

View File

@ -1,7 +1,7 @@
---
id: dropbox
label: Dropbox Synchronization
title: Dropbox Synchronization - Services
title: Dropbox Synchronization - System Integrations
type: io
description: "This service will synchronize files on the openHAB server, such as configuration and log files, to and/or from a Dropbox account."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/io/org.openhab.io.dropbox/README.md

View File

@ -1,7 +1,7 @@
---
id: gcal
label: Google Calendar Scheduler
title: Google Calendar Scheduler - Services
title: Google Calendar Scheduler - System Integrations
type: io
description: "The Google Calendar Scheduler allows you to control items in openHAB at scheduled times in the future. It will send commands to items or update the state of items when defined on one of your Google Calendars."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/io/org.openhab.io.gcal/README.md

View File

@ -1,7 +1,7 @@
---
id: homekit
label: HomeKit Add-on
title: HomeKit Add-on - Services
title: HomeKit Add-on - System Integrations
type: io
description: "This is an add-on that exposes your openHAB system as a bridge over the HomeKit protocol."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: hueemulation
label: openHAB Hue Emulation
title: openHAB Hue Emulation - Services
title: openHAB Hue Emulation - System Integrations
type: io
description: "Hue Emulation exposes openHAB items as Hue devices to other Hue HTTP API compatible applications like an Amazon Echo."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: imperihome
label: ImperiHome integration service
title: ImperiHome integration service - Services
title: ImperiHome integration service - System Integrations
type: io
description: "This IO service exposes openHAB Items to the Evertygo [ImperiHome](http://www.evertygo.com/imperihome) dashboard app for Android and iOS."
since: 2x

View File

@ -0,0 +1,163 @@
---
id: mycroft-skill
label: Mycroft AI Skill
title: Mycroft AI Skill - System Integrations
type: io
description: "[Mycroft AI](https://mycroft.ai/) is the worlds first open source voice enabled assistant."
since: 2x
install: manual
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Mycroft AI Skill
[Mycroft AI](https://mycroft.ai/) is the worlds first open source voice enabled assistant.
The skill allows you to connect a running Mycroft instance to your openHAB system.
Supported natural voice commands and responses can freely be modified and extended.
The skill currently supportes the English (U.S.) and English (U.K.) languages but new languages are easily added via configuration files.
## General Configuration Instructions
### Requirements
- A running [instance of Mycroft](https://mycroft.ai/get-mycroft/) (Mark 1, picroft, ...)
- A running instance of openHAB (version 1.x or v2.x)
- openHAB must be reacheable from the Mycroft instance
### Skill Installation
The openHAB skill has to be installed on your Mycroft instance, please refer to the [official documentation](https://docs.mycroft.ai/skills.and.features/adding.skills) to learn how to install a skill.
Clone the [skill repository](https://github.com/openhab/openhab-mycroft.git) into the Mycroft skills directory,
then trigger installation of needed dependencies:
```shell
cd ~/.mycroft/skills
git clone https://github.com/mortommy/mycroft-skill-openhab skill-openhab
workon mycroft
cd skill-openhab
pip install -r requirements.txt
```
If on [picroft](https://docs.mycroft.ai/development/installation/raspberry.pi), use the skills directory `/opt/mycroft/skills` and skip the `workon mycroft` command.
### Skill Configuration
Add the block below to your `mycroft.conf` file:
```json
"openHABSkill": {
"host": "openHAB server ip",
"port": "openHAB server port"
}
```
Restart mycroft for the changes to take effect.
### openHAB Item Configuration
Items are exposed to openHAB skill for Mycroft through the use of tags.
See the [Hue Emulation](http://docs.openhab.org/addons/io/hueemulation/readme.html) and [HomeKit Add-on](http://docs.openhab.org/addons/io/homekit/readme.html) documentation for details about tagging and available tags.
* **Items via .items - File**
See [Item Definition and Syntax](http://docs.openhab.org/configuration/items.html#item-definition-and-syntax)
Some examples of tagged items are:
```java
Color KitchenLight "Kitchen Light" <light> (gKitchen) ["Lighting"] {channel="hue:0200:1:bloom1:color"}
Color DiningroomLight "Diningroom Light" <light> (gKitchen) ["Lighting"] {channel="hue:0200:1:bloom1:color"}
Switch GoodNight "Good Night" ["Switchable"]
Number MqttID1Temperature "Bedroom Temperature" <temperature> ["CurrentTemperature"] {mqtt="<[mosquitto:mysensors/SI/1/1/1/0/0:state:default]"}
Number MqttID1Humidity "Bedroom Humidity" ["CurrentHumidity"] {mqtt="<[mosquitto:mysensors/SI/1/0/1/0/1:state:default]"}
Group gThermostat "Main Thermostat" ["gMainThermostat"]
Number MainThermostatCurrentTemp "Main Thermostat Current Temperature" (gMainThermostat) ["CurrentTemperature"]
Number MainThermostatTargetTemperature "Main Thermostat Target Temperature" (gMainThermostat) ["TargetTemperature"]
String MainThermostatHeatingCoolingMode "Main Thermostat Heating/Cooling Mode" (gMainThermostat) ["homekit:HeatingCoolingMode"]
```
If items are modified in openHAB, a refresh in Mycroft is needed by the voice command:
- *"Hey Mycroft, refresh openHAB Items"*
#### Item Label Recommendation
Matching of voice commands to Items happens based on the Item label (e.g. "Kitchen Light").
It is therefore advisable, to choose labels that can be used to form natural commands.
As an example, compare "Hey Mycroft, turn on the *Kitchen Light*" vs. "Hey Mycroft, turn on the *Ground Floor LEDs Kitchen*".
In combination with the Mycroft skill (and other similar services) you are thereby tempted to break with your naming scheme and introduce confusion into your setup.
openHAB Tip: You may define multiple Items bound to one channel.
Instead of manipulating the label of one single Item, you can define multiple Items specifically for voice commands.
See the following example:
```java
// Common/main Item bound to a binding channel
Switch Kitchen_Light "Ground Floor LEDs Kitchen" <light> (gKitchen) {channel="..."}
// Two Items with labels fitting for voice commands, bound to the same binding channel
Switch Kitchen_Light_A "Kitchen Light" ["Lighting"] {channel="..."}
Switch Kitchen_Light_A2 "Kitchen LEDs" ["Lighting"] {channel="..."}
```
### Example Voice Commands
Each item tag supports different command, here is the summary:
| Tag | Key word | Commands |
|----------------------|---------------|-----------------------|
| Switchable | turn | on, off |
| | switch | on, off |
| | put | on, off |
| | what's | status |
| | | |
| Lighting | turn | on, off |
| | switch | on, off |
| | put | on, off |
| | dim | |
| | dim by | value in percentage |
| | brighten | |
| | brighten by | value in percentage |
| | | |
| Thermostat | adjust to | values in degrees |
| | regulate to | values in degrees |
| | tune to | values in degrees |
| | decrease by | values in degrees |
| | increase by | values in degrees |
| | what's | adjusted to |
| | what's | regulated to |
| | what's | tuned to |
| | | |
| CurrentHumidity | what's | humidity |
| | | |
| CurrentTemperature | what's | temperature |
With references to the above item definitions, here are an examples of working commands:
- *"Hey Mycroft, turn on Diningroom Light"*
- *"Hey Mycroft, switch off Kitchen Light"*
- *"Hey Mycroft, put on Good Night"*
- *"Hey Mycroft, what is Good Night status?"*
- *"Hey Mycroft, set Diningroom to 50 percent"*
- *"Hey Mycroft, dim Kitchen"*
- *"Hey Mycroft, brighten Kitchen"*
- *"Hey Mycroft, dim Kitchen by 20 percent"*
- *"Hey Mycroft, what's Bedroom temperature?"*
- *"Hey Mycroft, what's Bedroom humidity?"*
- *"Hey Mycroft, adjust Main Thermostat to 21 degrees"*
- *"Hey Mycroft, regulate Main Thermostat to 20 degrees"*
- *"Hey Mycroft, decrease Main Thermostat by 2 degrees"*
- *"Hey Mycroft, increase Main Thermostat by 1 degrees"*
- *"Hey Mycroft, what is Main Thermostat regulated to?"*
- *"Hey Mycroft, what is Main Thermostat tuned to?"*
### Additional Comments
* By default all temperatures are in Celsius, no test so far about the tag Fahrenheit to the thermostat group item (which should also be tagged with `Thermostat`).

View File

@ -1,7 +1,7 @@
---
id: openhabcloud
label: openHAB Cloud Connector
title: openHAB Cloud Connector - Services
title: openHAB Cloud Connector - System Integrations
type: io
description: "The openHAB Cloud Connector allows connecting the local openHAB runtime to a remote [openHAB Cloud](https://github.com/openhab/openhab-cloud/blob/master/README.md) instance, such as [myopenHAB.org](http://www.myopenHAB.org), which is an instance of the"
since: 2x

View File

@ -1,7 +1,7 @@
---
id: caldav
label: CalDAV
title: CalDAV - Persistence
title: CalDAV - Persistence Services
type: persistence
description: "This binding can be used to connect through the CalDAV Interface to calendars."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.caldav/README.md

View File

@ -1,7 +1,7 @@
---
id: cosm
label: Xively (formerly Cosm)
title: Xively (formerly Cosm) - Persistence
title: Xively (formerly Cosm) - Persistence Services
type: persistence
description: "This service allows you to feed item states to the [Xively IoT Platform](https://www.xively.com/)."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.cosm/README.md

View File

@ -1,7 +1,7 @@
---
id: db4o
label: db4o
title: db4o - Persistence
title: db4o - Persistence Services
type: persistence
description: "db4o is a pure Java object database, which uses a simple database file for persistence."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.db4o/README.md

View File

@ -1,7 +1,7 @@
---
id: dynamodb
label: Amazon DynamoDB
title: Amazon DynamoDB - Persistence
title: Amazon DynamoDB - Persistence Services
type: persistence
description: "This service allows you to persist state updates using the [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) database. Query functionality is also fully supported."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.dynamodb/README.md

View File

@ -1,7 +1,7 @@
---
id: exec
label: Exec
title: Exec - Persistence
title: Exec - Persistence Services
type: persistence
description: "This service allows you to execute commands in the underlying OS to persist item states. It could be used to, for example, call the original `rrdtool` CLI tool."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.exec/README.md

View File

@ -1,7 +1,7 @@
---
id: influxdb
label: InfluxDB (0.9 and newer)
title: InfluxDB (0.9 and newer) - Persistence
title: InfluxDB (0.9 and newer) - Persistence Services
type: persistence
description: "This service allows you to persist and query states using the [InfluxDB](http://influxdb.org) time series database. The persisted values can be queried from within openHAB. There also are nice tools on the web for visualizing InfluxDB time series, such as [Grafana](http://grafana.org/)."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.influxdb/README.md

View File

@ -1,7 +1,7 @@
---
id: influxdb08
label: InfluxDB (up to 0.8.x)
title: InfluxDB (up to 0.8.x) - Persistence
title: InfluxDB (up to 0.8.x) - Persistence Services
type: persistence
description: "This service allows you to persist and query states using the [InfluxDB](http://influxdb.org) time series database. The persisted values can be queried from within openHAB. There also are nice tools on the web for visualizing InfluxDB time series, such as [Grafana](http://grafana.org/)."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.influxdb08/README.md

View File

@ -1,7 +1,7 @@
---
id: jdbc
label: JDBC
title: JDBC - Persistence
title: JDBC - Persistence Services
type: persistence
description: "This service writes and reads item states to and from a number of relational database systems that support [Java Database Connectivity (JDBC)](https://en.wikipedia.org/wiki/Java_Database_Connectivity). This service allows you to persist state updates using one of several different underlying database services. It is designed for a maximum of scalability, to store very large amounts of data and still over the years not lose its speed."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.jdbc/README.md

View File

@ -1,7 +1,7 @@
---
id: jpa
label: Java Persistence API (JPA)
title: Java Persistence API (JPA) - Persistence
title: Java Persistence API (JPA) - Persistence Services
type: persistence
description: "This service allows you to persist state updates using a SQL or NoSQL database through the [Java Persistence API](https://en.wikipedia.org/wiki/Java_Persistence_API). The service uses an abstraction layer that theoretically allows it to support many available SQL or NoSQL databases."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.jpa/README.md

View File

@ -1,7 +1,7 @@
---
id: mapdb
label: mapdb
title: mapdb - Persistence
title: mapdb - Persistence Services
type: persistence
description: "The [mapdb](http://www.mapdb.org/) Persistence Service is based on simple key-value store that only saves the last value. The intention is to use this for `restoreOnStartup` items because all other persistence options have their drawbacks if values are only needed for reload. They:"
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.mapdb/README.md

View File

@ -1,7 +1,7 @@
---
id: mongodb
label: MongoDB
title: MongoDB - Persistence
title: MongoDB - Persistence Services
type: persistence
description: "This service allows you to persist state updates using the MongoDB database. It supports writing information to a MongoDB document store, as well as querying from it."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.mongodb/README.md

View File

@ -1,7 +1,7 @@
---
id: mqtt
label: MQTT
title: MQTT - Persistence
title: MQTT - Persistence Services
type: persistence
description: "This service allows you to feed item states to an MQTT broker using the openHAB persistence strategies. The destination broker, topic and messages are configurable."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.mqtt/README.md

View File

@ -1,7 +1,7 @@
---
id: mysql
label: MySQL
title: MySQL - Persistence
title: MySQL - Persistence Services
type: persistence
description: "This service allows you to persist state updates using the [MySQL](https://www.mysql.com/) database. Note that other SQL databases need a separate service due to incompatibilities between different SQL databases."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.mysql/README.md

View File

@ -1,7 +1,7 @@
---
id: rrd4j
label: rrd4j
title: rrd4j - Persistence
title: rrd4j - Persistence Services
type: persistence
description: "The [rrd4j](https://github.com/rrd4j/rrd4j) Persistence service is based on a round-robin database."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.rrd4j/README.md

View File

@ -1,7 +1,7 @@
---
id: sense
label: Sen.Se
title: Sen.Se - Persistence
title: Sen.Se - Persistence Services
type: persistence
description: "This service allows you to feed item data to [Sen.Se web site](http://open.sen.se)."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.sense/README.md

View File

@ -1,7 +1,7 @@
---
id: sitewhere
label: SiteWhere
title: SiteWhere - Persistence
title: SiteWhere - Persistence Services
type: persistence
description: "The [SiteWhere](http://www.sitewhere.org/) persistence service allows openHAB item states to be forwarded to a SiteWhere server instance running locally or in the cloud. Selected events from an openHAB instance can be stored in SiteWhere under a virtual device with hardware ID specified in the persistence provider implementation."
source: https://github.com/openhab/openhab1-addons/blob/master/bundles/persistence/org.openhab.persistence.sitewhere/README.md

View File

@ -1,7 +1,7 @@
---
id: exec
label: Exec
title: Exec - Transformations
title: Exec - Transformation Services
type: transform
description: "Execute an external program, substituting the placeholder `%s` in the given command line with the input value, and returning the output of the external program."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: javascript
label: JavaScript
title: JavaScript - Transformations
title: JavaScript - Transformation Services
type: transform
description: "Transform an input to an output using JavaScript."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: jsonpath
label: JsonPath
title: JsonPath - Transformations
title: JsonPath - Transformation Services
type: transform
description: "Extract an element of a JSON string using a [JsonPath expression](https://github.com/jayway/JsonPath#jayway-jsonpath)."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: map
label: Map
title: Map - Transformations
title: Map - Transformation Services
type: transform
description: "Transforms the input by mapping it to another string. It expects the mappings to be read from a file which is stored under the `transform` folder."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: regex
label: RegEx
title: RegEx - Transformations
title: RegEx - Transformation Services
type: transform
description: "Given a source string and a regular expression, use the regular expression to yield a transformed string."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: scale
label: Scale
title: Scale - Transformations
title: Scale - Transformation Services
type: transform
description: "Transform the input by matching it between limits of ranges in a scale file. The input string must be in numerical format."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: xpath
label: XPath
title: XPath - Transformations
title: XPath - Transformation Services
type: transform
description: "Transform XML input using an [XPath expression](https://www.w3.org/TR/xpath/#section-Expressions)."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: xslt
label: XSLT
title: XSLT - Transformations
title: XSLT - Transformation Services
type: transform
description: "Transform input using the XML Stylesheet Language for Transformations (XSLT)."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: basic
label: Basic UI
title: Basic UI - UI
title: Basic UI - UIs
type: ui
description: "The Basic UI is a web interface based on Material Design Lite from Google."
since: 2x

View File

@ -1,7 +1,7 @@
---
id: classic
label: Classic UI
title: Classic UI - UI
title: Classic UI - UIs
type: ui
description: "The Classic UI is the original web user interface of openHAB 1 and thus is the most stable and widely used UI as of today."
since: 2x

View File

@ -1,196 +0,0 @@
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
-->
# Cordova Hooks
Cordova Hooks represent special scripts which could be added by application and plugin developers or even by your own build system to customize cordova commands. Hook scripts could be defined by adding them to the special predefined folder (`/hooks`) or via configuration files (`config.xml` and `plugin.xml`) and run serially in the following order:
* Application hooks from `/hooks`;
* Application hooks from `config.xml`;
* Plugin hooks from `plugins/.../plugin.xml`.
__Remember__: Make your scripts executable.
__Note__: `.cordova/hooks` directory is also supported for backward compatibility, but we don't recommend using it as it is deprecated.
## Supported hook types
The following hook types are supported:
after_build/
after_compile/
after_docs/
after_emulate/
after_platform_add/
after_platform_rm/
after_platform_ls/
after_plugin_add/
after_plugin_ls/
after_plugin_rm/
after_plugin_search/
after_plugin_install/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being installed
after_prepare/
after_run/
after_serve/
before_build/
before_compile/
before_docs/
before_emulate/
before_platform_add/
before_platform_rm/
before_platform_ls/
before_plugin_add/
before_plugin_ls/
before_plugin_rm/
before_plugin_search/
before_plugin_install/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being installed
before_plugin_uninstall/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being uninstalled
before_prepare/
before_run/
before_serve/
pre_package/ <-- Windows 8 and Windows Phone only.
## Ways to define hooks
### Via '/hooks' directory
To execute custom action when corresponding hook type is fired, use hook type as a name for a subfolder inside 'hooks' directory and place you script file here, for example:
# script file will be automatically executed after each build
hooks/after_build/after_build_custom_action.js
### Config.xml
Hooks can be defined in project's `config.xml` using `<hook>` elements, for example:
<hook type="before_build" src="scripts/appBeforeBuild.bat" />
<hook type="before_build" src="scripts/appBeforeBuild.js" />
<hook type="before_plugin_install" src="scripts/appBeforePluginInstall.js" />
<platform name="wp8">
<hook type="before_build" src="scripts/wp8/appWP8BeforeBuild.bat" />
<hook type="before_build" src="scripts/wp8/appWP8BeforeBuild.js" />
<hook type="before_plugin_install" src="scripts/wp8/appWP8BeforePluginInstall.js" />
...
</platform>
<platform name="windows8">
<hook type="before_build" src="scripts/windows8/appWin8BeforeBuild.bat" />
<hook type="before_build" src="scripts/windows8/appWin8BeforeBuild.js" />
<hook type="before_plugin_install" src="scripts/windows8/appWin8BeforePluginInstall.js" />
...
</platform>
### Plugin hooks (plugin.xml)
As a plugin developer you can define hook scripts using `<hook>` elements in a `plugin.xml` like that:
<hook type="before_plugin_install" src="scripts/beforeInstall.js" />
<hook type="after_build" src="scripts/afterBuild.js" />
<platform name="wp8">
<hook type="before_plugin_install" src="scripts/wp8BeforeInstall.js" />
<hook type="before_build" src="scripts/wp8BeforeBuild.js" />
...
</platform>
`before_plugin_install`, `after_plugin_install`, `before_plugin_uninstall` plugin hooks will be fired exclusively for the plugin being installed/uninstalled.
## Script Interface
### Javascript
If you are writing hooks in Javascript you should use the following module definition:
```javascript
module.exports = function(context) {
...
}
```
You can make your scipts async using Q:
```javascript
module.exports = function(context) {
var Q = context.requireCordovaModule('q');
var deferral = new Q.defer();
setTimeout(function(){
console.log('hook.js>> end');
deferral.resolve();
}, 1000);
return deferral.promise;
}
```
`context` object contains hook type, executed script full path, hook options, command-line arguments passed to Cordova and top-level "cordova" object:
```json
{
"hook": "before_plugin_install",
"scriptLocation": "c:\\script\\full\\path\\appBeforePluginInstall.js",
"cmdLine": "The\\exact\\command\\cordova\\run\\with arguments",
"opts": {
"projectRoot":"C:\\path\\to\\the\\project",
"cordova": {
"platforms": ["wp8"],
"plugins": ["com.plugin.withhooks"],
"version": "0.21.7-dev"
},
"plugin": {
"id": "com.plugin.withhooks",
"pluginInfo": {
...
},
"platform": "wp8",
"dir": "C:\\path\\to\\the\\project\\plugins\\com.plugin.withhooks"
}
},
"cordova": {...}
}
```
`context.opts.plugin` object will only be passed to plugin hooks scripts.
You can also require additional Cordova modules in your script using `context.requireCordovaModule` in the following way:
```javascript
var Q = context.requireCordovaModule('q');
```
__Note__: new module loader script interface is used for the `.js` files defined via `config.xml` or `plugin.xml` only.
For compatibility reasons hook files specified via `/hooks` folders are run via Node child_process spawn, see 'Non-javascript' section below.
### Non-javascript
Non-javascript scripts are run via Node child_process spawn from the project's root directory and have the root directory passes as the first argument. All other options are passed to the script using environment variables:
* CORDOVA_VERSION - The version of the Cordova-CLI.
* CORDOVA_PLATFORMS - Comma separated list of platforms that the command applies to (e.g.: android, ios).
* CORDOVA_PLUGINS - Comma separated list of plugin IDs that the command applies to (e.g.: org.apache.cordova.file, org.apache.cordova.file-transfer)
* CORDOVA_HOOK - Path to the hook that is being executed.
* CORDOVA_CMDLINE - The exact command-line arguments passed to cordova (e.g.: cordova run ios --emulate)
If a script returns a non-zero exit code, then the parent cordova command will be aborted.
## Writing hooks
We highly recommend writting your hooks using Node.js so that they are
cross-platform. Some good examples are shown here:
[http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/](http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/)
Also, note that even if you are working on Windows, and in case your hook scripts aren't bat files (which is recommended, if you want your scripts to work in non-Windows operating systems) Cordova CLI will expect a shebang line as the first line for it to know the interpreter it needs to use to launch the script. The shebang line should match the following example:
#!/usr/bin/env [name_of_interpreter_executable]

View File

@ -1,7 +1,7 @@
---
id: habmin
label: HABmin
title: HABmin - UI
title: HABmin - UIs
type: ui
description: "HABmin is a modern, professional and portable user interface for openHAB, providing both user and administrative functions (e.g., sitemaps for users, and configuration utilities to aid setup)."
since: 2x

View File

@ -1,78 +0,0 @@
angular-dialgauge
=================
AngularJS directive for a dial gauge. This uses SVG and will automatically size to the parent. Therefore the parent should
have a size.
The following options are possible. These can either be set as separate configuration items, or a configuration object
called ```options``` can be set to provide a single configuration object.
Option | Description
--------------------| -----------
rotate | Sets the rotation of the gauge
angle | Sets the total angle of the active part of the gauge
scaleMin | Sets the minimum value
scaleMax | Sets the maximum value
lineCap | Sets the endcap for the bar line (round, butt, square)
barWidth | Sets the width of the bar
barColor | Sets the color of the bar
barColorEnd | Along with _barColor_ will produce a dynamic color for the bar. Must be used with ```#rrggbb``` color format.
barAngle | Sets the angle of the indicator if a knob style is desired
trackColor | Sets the color of the track behind the bar
scaleOffset |
scaleMajorColor | Sets the color to be used for the minor ticks in the scale
scaleMajorWidth | Sets the width of the line for the minor ticks in the scale
scaleMajorLength | Sets the length of the line for the minor ticks in the scale
scaleMajorSteps | Sets the number of major steps
scaleMinorColor | Sets the color to be used for the minor ticks in the scale
scaleMinorWidth | Sets the width of the line for the minor ticks in the scale
scaleMinorLength | Sets the length of the line for the minor ticks in the scale
scaleMinorSteps | Sets the number of minor steps
dialWidth |
borderWidth | Sets the width of the border
borderOffset | Sets the number of pixels between the border and the scale
borderColor | Sets the border color used to create a circle around the outside of the gauge
title | Sets the title string
units | Sets the text to be used for the units
The following CSS classes can be used for the text -:
Class | Description
--------------------| -----------
dialgauge-title | Styles the title caption
dialgauge-value | Styles the value (number)
dialgauge-unit | Styles the unit
For example -:
```
.dialgauge-unit {
font-size:14px;
font-weight:100;
fill: grey;
stroke: grey;
}
.dialgauge-value {
font-size:20px;
font-weight:200;
fill: white;
stroke: white;
}
```
Installation
============
Use bower
```
bower install angular-dialgauge --save
```
Add the ```angular-dialgauge.js``` file to your application and ensure you register the directive by adding
```ngDialGauge``` to your app.
License
=======
Licensed under MIT license.

View File

@ -1,57 +0,0 @@
# bower-angular-localization
This repo is for distribution on `bower`. The source for this module is in the
[main AngularJS Localization repo](https://github.com/doshprompt/angular-localization).
Please file issues and pull requests against that repo.
## Install
Install with `bower`:
```shell
bower install angular-localization
```
Add a `<script>` to your `index.html`:
```html
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-cookies/angular-cookies.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
<script src="bower_components/angular-localization/angular-localization.js"></script>
```
Inject the dependency into your application module
```js
angular.module('myApp', ['ngLocalize']);
```
## Documentation
Documentation is available on the
[main AngularJS Localization repo](https://github.com/doshprompt/angular-localization).
## License
The MIT License (MIT)
Copyright (c) 2014 Rahul Doshi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,36 +0,0 @@
# angular-toggle-switch [![Build Status](https://travis-ci.org/cgarvis/angular-toggle-switch.png?branch=master)](https://travis-ci.org/cgarvis/angular-toggle-switch)
Toggle Switches for AngularJS. Based off [Bootstrap switch](http://www.larentis.eu/switch/) by Matt Lartentis.
## Demo
[cgarvis.github.io/angular-toggle-switch](http://cgarvis.github.io/angular-toggle-switch)
## Installation
Download [angular-toggle-switch.min.js](https://raw.github.com/cgarvis/angular-toggle-switch/master/angular-toggle-switch.min.js) or install with bower.
```bash
$ bower install angular-toggle-switch --save
```
Load `angular-toggle-switch.min.js` then add the `toggle-switch` module to your Angular App.
```javascript
angular.module('app', ['toggle-switch']);
```
See [demo](http://cgarvis.github.io/angular-toggle-switch) for usage.
## Development
Testing is done using Karma Test Runner.
```bash
$ grunt test
```
## Release
```bash
$ grunt release
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -1,3 +1,14 @@
---
layout: documentation
title: HABPanel
---
{% include base.html %}
<!-- Attention authors: If you want to improve or enhance this article, please go to: -->
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/issues -->
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/blob/master/docs/habpanel.md -->
# Designing dashboard interfaces with HABPanel
The [HABPanel]({{base}}/addons/ui/habpanel/readme.html) user interface is installed by default when choosing any initial setup package, and allows the creation of user-friendly dashboards, particularly suited for (e.g. wall-mounted) tablets. These dashboards can be designed interactively in the embedded designer, rather than using configuration files.
@ -8,7 +19,7 @@ Despite being similar, HABPanel's dashboards and [sitemaps]({{base}}/configurati
HABPanel has its own terminology of entities presented below:
![HABPanel concepts](habpanel-concepts.png)
![HABPanel concepts](images/habpanel_concepts.png)
- The **Panel Registry** is the central storage used by HABPanel on a given openHAB instance, it contains several **Panel Configurations**;
- A **Panel Configuration** is a container holding a **Panel** along with its **Settings** and the definition of **Custom Widgets**. Each device HABPanel runs on (desktop browser, tablet...) has an active panel configuration and displays the panel associated with it;
@ -41,11 +52,11 @@ The following properties are defined:
The main menu is HABPanel's home page. It contains tiles linking to the panel's dashboards, and an icon to switch between the run mode and the edit mode (if available).
![Main menu - run mode](main-menu-run.png)
![Main menu - run mode](images/habpanel_main-menu-run.png)
Use the gears icon in the top-right corner to switch between the two modes.
![Main menu - edit mode](main-menu-edit.png)
![Main menu - edit mode](images/habpanel_main-menu-edit.png)
When in edit mode, several features are available:
* Add a new empty dashboard with the **Add new dashboard** link;
@ -67,36 +78,37 @@ The configuration dialog when clicking on a tile's gear icon contains the follow
| Icon | Icon associated with the dashboard, currently only used in the side drawer
| Size (icon) | _(currently unused)_
| Title Text Color | Color for the name of the dashboard on the tile
| Advanced tab | Contains settings currently unstable or buggy, for advanced users only
| Advanced tab | Contains settings currently unstable or unsupported, for advanced users only
| Custom widgets tab | This [experimental feature](https://community.openhab.org/t/new-display-options-incl-experimental-custom-widgets-everywhere/34140/1) allows certain parts of a dashboard to be replaced by a custom widget (see _Custom Widgets_ below): the main menu tile, the drawer menu and the dashboard item - use with caution
It also contains a **Delete** button which will delete the entire dashboard and its contents - this happens immediately and cannot be undone!
### The side drawer
![Side drawer](side-drawer.png)
![Side drawer](images/habpanel_side-drawer.png)
The side drawer can be accessed from any screen by a swipe or drag to the right (on most elements where there isn't a conflict with this gesture), or with the "hamburger icon" ☰ in the top-left corner.
It is comprised of three parts:
1. A **header** - clicking on it returns to the main menu. Note: if defined, the title of the panel is displayed instead of the default "HABPanel" label, it is configured in the settings (see below);
2. A **list of dashboards** for quick switching bettween dashboards without going back to the main menu - they are presented in the order of the menu (sorted by row, then by column);
2. A **list of dashboards** for quick switching between dashboards without going back to the main menu - they are presented in the order of the menu (sorted by row, then by column);
3. A **footer** displaying the current date & time and featuring a link to the settings screen (if available).
### The dashboard designer
![Dashboard designer](dashboard-designer.png)
![Dashboard designer](images/habpanel_dashboard-designer.png)
The dashboard designer is where widgets can be added, positioned, resized and configured. Placeholders are displayed where actual widgets would be on the running dashboard.
To add a widget, use the **Add widget** button and choose among the list of standard widgets, or eventual custom widgets in the panel configuration.
See below for a description of the standard widgets.
![Add widget menu](add-widget.png)
![Add widget menu](images/habpanel_add-widget.png)
Use the header of a widget placeholder (with the four-arrow icon and the widget type) to move the widget. Moving a widget over other widgets do not push them away to make room (contrary to the main menu tiles), so ensure there is sufficient room for your widget before moving it.
![Widget placeholder features](dashboard-designer-placeholder-menu.png)
![Widget placeholder features](images/habpanel_dashboard-designer-placeholder-menu.png)
When hovering over a placeholder (or tapping inside it if on a touch interface), a chevron appears in the bottom-right corner allowing to resize it.
@ -110,15 +122,17 @@ Modifications to the dashboard are not saved automatically, use the **Save** but
### Running dashboards
![A running dashboard](running-dashboard.png)
![A running dashboard](images/habpanel_running-dashboard.png)
When a dashboard is running, widgets can be interacted with, and server-sent events are received when items' states are updated, so widgets update automatically in HABPanel.
The icons in the top-right corner perform the following:
- the **speech balloon** activates the speech recognition feature and send the results as text to openHAB's default human language interpreter. This implies [some configuration on the server]({{base}}/configuration/multimedia.html#human-language-interpreter), and this icon might not be displayed if the browser doesn't support voice recognition ([currently only in Chrome on desktops and Android](http://caniuse.com/#feat=speech-recognition){:target="_blank"}). It can also be configured in the panel configuration to appear on the bottom of the screen;
- the **speech balloon** activates the speech recognition feature and send the results as text to openHAB's default human language interpreter. This implies [some configuration on the server]({{base}}/configuration/multimedia.html#human-language-interpreter), and this icon might not be displayed if the browser doesn't support voice recognition ([mainly only in Chrome and other webkit variants currently](http://caniuse.com/#feat=speech-recognition){:target="_blank"}). It can also be configured in the panel configuration to appear on the bottom of the screen;
- the **refresh** button forces HABPanel to retrieve the current state of all items;
- the **fullscreen** button tells the browser to go fullscreen, if supported.
Tip: while running a dasboard, append `?kiosk=on` to the URL in the web browser to switch to "kiosk mode"; in this mode, the header, hamburger menu and toolbar will be hidden and the side drawer will be disabled - therefore there will be no easy way for an end user to switch to another screen (except with button widgets configured for that purpose). This mode is useful to display a full-screen, bare-bones UI for a fixed tablet.
## Additional features and settings
Apart from the storage configuration discussed above, the settings screen contains several settings kept as part of the panel configuration (meaning they are set separately):
@ -129,9 +143,14 @@ Apart from the storage configuration discussed above, the settings screen contai
| Panel name | An user-friendly name for the panel. It will be displayed in the header of the side drawer.
| Theme | HABPanel comes with a number of built-in themes, with this setting a different theme may applied to the panel. Themes are not user-modifiable.
| Background image | Sets the specified URL as background image for the whole panel. *Tip: the background image works best with the 'translucent' theme!*
| No clock on the home menu | _(Deprecated)_
| Additional stylesheet | Reference the relative URL of an additional CSS file which will be included and can be used to override the styles defined by the theme. For additional information on how you can customize HABPanel's styles, go to: [HABPanel Development & Advanced Features: Start Here!](https://community.openhab.org/t/habpanel-development-advanced-features-start-here/30755/1)
| Drawer heading image | Reference the URL of an image (expected width: 265 pixels) which will replace the header in the side drawer
| Hide the drawer's footer | Check to remove the bottom black part of the side drawer containing the date & time
| Hide toolbar buttons (speak/refresh/fullscreen) | Check those boxes to hide the corresponding button in the default dashboard header top-right corner
| Show a clock in the header | If checked, a clock will be displayed in the main menu and the dashboards
| Header clock format (shown if "Show a clock in the header" is checked) | Use an [AngularJS' date filter format string](https://docs.angularjs.org/api/ng/filter/date) to customize the clock format in the header. The default is `HH:mm`
| Prevent scrolling (when not editing) | When enabled, it is impossible to scroll the dashboard on a tablet (and it prevents the "elastic" bouncing effect on iOS/Safari)
| Manage > | Goes to the list of custom widget definitions for the active panel configuration
| Manage > (custom widgets) | Goes to the list of custom widget definitions for the active panel configuration
| Voice | Selects a voice from the detected list for text-to-speech*
| Speak the new value of the following item when it changes | When the selected String item change to a new text, HABPanel will use the browser's text-to-speech engine and the selected voice to read it aloud*
| Display a floating speech button at the bottom of the screen | Use an alternative style for the Speak (voice input) button in dashboards
@ -148,25 +167,25 @@ The following built-in widgets are available:
#### Dummy (dummy)
![Dummy widget](widget-dummy.png)
![Dummy widget](images/habpanel_widget-dummy.png)
The so-called dummy widget (whose name is explained by historical reasons - it evolved from the first developed widget) displays the current state of an item without any interactivity, along with a label and an optional icon.
#### Switch (switch)
![Switch widget](widget-switch.png)
![Switch widget](images/habpanel_widget-switch.png)
The switch widget is a simple widget to control a Switch item as defined in openHAB - it reports its state and is able to toggle it between ON and OFF.
#### Label (label)
![Label widget](widget-label.png)
![Label widget](images/habpanel_widget-label.png)
The label widget is straightforward: it simply displays a fixed text and has a few appeareance options (color, font). It can for example be used as a header for a group of widgets below it.
#### Button (button)
![Button widget](widget-button.png)
![Button widget](images/habpanel_widget-button.png)
The button widget can be clicked (or tapped) and will perform an action, like sending commands to an item or navigating to another dashboard. It can also adjust its colors depending on the state of the underlying item.
@ -174,49 +193,55 @@ Multiple buttons are often used together to present different options for an ite
#### Slider (slider)
![Slider widget](widget-slider.png)
![Slider widget](images/habpanel_widget-slider.png)
The slider widget can reflect the state of, and update, numerical items within a range of values. Several options are available to alter its appearance and behavior.
#### Knob (knob)
![Knob widget](widget-knob.png)
![Knob widget](images/habpanel_widget-knob.png)
The knob widget is similar in essence to the slider, but in a rotary fashion. It also offers extensive configurability over its appearance and behavior.
#### Selection (selection)
![Selection widget](images/habpanel_widget-selection.png)
The selection widget displays the current state of an item, much like a dummy widget, except it opens a menu or a grid of automatically or manually configured choices for sending commands to this item. Various display options are available.
#### Color picker (colorpicker)
![Color picker widget](widget-colorpicker.png)
![Color picker widget](images/habpanel_widget-colorpicker.png)
The color picker widget offers several ways of displaying and updating the state of an openHAB Color item (or group).
#### Image (image)
![Image widget](widget-image.png)
![Image widget](images/habpanel_widget-image.png)
The image widget can display an image, directly or via an openHAB String item, and can refresh it at regular intervals.
#### Frame (frame)
![Frame widget](widget-frame.png)
![Frame widget](images/habpanel_widget-frame.png)
The frame widget displays an external web page in a HTML `<iframe>`.
#### Clock (clock)
![Clock widget](widget-clock.png)
![Clock widget](images/habpanel_widget-clock.png)
The clock widget displays an analog or digital clock. It can also be used to display the current date.
#### Chart (chart)
![Chart widget](widget-chart.png)
![Chart widget](images/habpanel_widget-chart.png)
The chart widget can leverage openHAB persistence services to plot numerical series over a time period. It can also display server-generated chart images (default or rrd4j variants).
#### Timeline (timeline)
![Timeline widget](widget-timeline.png)
![Timeline widget](images/habpanel_widget-timeline.png)
The timeline widget is the chart widget's counterpart for non-numerical items. It can display multiple "swimlanes" of items with color-coded slices representing their state changes during the selected period. Hovering or tapping inside a color slice displays details on the state of the item at the time.
@ -224,7 +249,7 @@ The timeline widget is the chart widget's counterpart for non-numerical items. I
The template widget allows an user-configured AngularJS HTML template to be rendered and hosted inside the widget boundaries; it exposes several helper functions and other facilities to retrieve and update openHAB's items from the template's markup.
Refer to the _Developing templates and custom widgets_ section below for more information on template development.
With only a few web development skills required, you can easily start developing your own widgets and share them to community. It is nonetheless rather complex, so the best information has been compiled in this community wiki topic: [HABPanel Development & Advanced Features: Start Here!](https://community.openhab.org/t/habpanel-development-advanced-features-start-here/30755). You can also [learn by example in the forum's HABPanel category](https://community.openhab.org/c/apps-services/habpanel) or seek the help of the community.
Templates are defined inline, for each particular instance, and thus are not optimized for sharing and re-use. For those cases, developing a _custom widget_ is more appropriate.
@ -232,17 +257,17 @@ Templates are defined inline, for each particular instance, and thus are not opt
Custom widgets are similar to (and based on) the template widget but are designed to be reused, shared, and configured. A custom widget is an AngularJS template with an associated set of configuration settings. It can be added to dashboards and configured individually, like a built-in widget. Definitions of custom widgets are stored in the registry at the panel configuration level; this means they are specific to a panel configuration and each panel configuration has its own custom widgets (see the _Concepts_ section above).
For more information, please read the [community thread about this feature](https://community.openhab.org/t/custom-widgets-feature-walkthrough/16670/1).
#### Managing custom widgets
([Community thread about this feature](https://community.openhab.org/t/custom-widgets-feature-walkthrough/16670/1))
The list of custom widgets either via the dashboard designer (click/tap the gears icon in the _Add Widget_ dropdown menu), or with the _Manage_ button in the settings screen.
The list of custom widgets either via the dashboard designer (click/tap the gears icon in the _Add Widget_ dropdown menu), or with the "Manage" button in the settings screen.
From the list, custom widgets can be created from scratch, or imported from a previously exported .json file or a GitHub repository. Members of the openHAB community also present their custom widgets on the forum: the _Get widgets from the openHAB community_ link brings up a filtered lists of custom widgets from the community.
From the list, custom widgets can be created from scratch, or imported from a previously exported .json file. Members of the openHAB community present their custom widgets on the forum. The _Get widgets from the openHAB community_ link brings up a filtered lists of custom widgets from the community.
Widgets can also come from [an openHAB addon or OSGi bundle](https://community.openhab.org/t/new-feature-globally-provisioned-widgets-i-e-with-osgi-bundles/26994): those are "globally-provisioned widgets". They cannot be modified or deleted (but can be cloned and then modified), and are available to all panel configurations.
Once they are created, custom widgets can be exported to a .json file or deleted from the list using the context menu accessed with the ellipsis icon **⁝** on the tiles.
![Custom widget context menu](custom-widget-context-menu.png)
The context menu **⁝** can be used to perform operations on the widget: globally-provisioned widgets can only be cloned, and manually defined or imported widgets can be exported or deleted. Widgets imported from GitHub can also be updated and include a link to repository's Readme file.
#### The widget designer
@ -258,13 +283,3 @@ When instantiated, the value of configuration settings are set in the template's
- **Preview:** Upon switching to this tab, a test instance of the widget is rendered in an otherwise blank testbed dashboard. Use the sliders to resize the widget in order to preview it at different sizes. If it defines configuration settings, they must likely be set for this preview using the gears icon: this will bring up the widget instance's configuration dialog as it would appear in the dashboard designer.
Don't forget to save the changes with the **Save** button.
## Developing templates and custom widgets
_This chapter will cover in detail how to write templates to build custom widgets. It is not yet written, in the meantime use the resources below:_
[Main thread in the community forums](https://community.openhab.org/t/template-widget-tutorial-examples-make-your-own-widget/14211/1)
[Seek community help in the HABPanel category](https://community.openhab.org/c/apps-services/habpanel)

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 287 KiB

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 223 KiB

View File

Before

Width:  |  Height:  |  Size: 703 KiB

After

Width:  |  Height:  |  Size: 703 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 286 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,7 +1,7 @@
---
id: habpanel
label: HABPanel
title: HABPanel - UI
title: HABPanel - UIs
type: ui
description: "HABPanel is a lightweight dashboard interface for openHAB."
since: 2x
@ -46,16 +46,16 @@ otherwise, the local browser's storage will be used only until you save a new pa
## Screenshots
![](doc/screenshot0.png)
![](docs/images/habpanel_screenshot0.png)
![](doc/screenshot1.png)
![](docs/images/habpanel_screenshot1.png)
![](doc/screenshot2.png)
![](docs/images/habpanel_screenshot2.png)
![](doc/screenshot3.png)
![](docs/images/habpanel_screenshot3.png)
![](doc/screenshot4.png)
![](docs/images/habpanel_screenshot4.png)
![](doc/screenshot5.png)
![](docs/images/habpanel_screenshot5.png)
![](doc/screenshot6.png)
![](docs/images/habpanel_screenshot6.png)

View File

@ -1,7 +1,7 @@
---
id: paper
label: Paper UI
title: Paper UI - UI
title: Paper UI - UIs
type: ui
description: "The Paper UI is an HTML5 web application. The Paper UI implements Google's Material Design and is responsive, so that it smoothly renders on different screen sizes. All modern browsers (Safari, Chrome, Firefox) besides the Internet Explorer are supported in their newest version. The Internet Explorer is mainly lacking support for SSE."
since: 2x

285
configuration/habpanel.md Normal file
View File

@ -0,0 +1,285 @@
---
layout: documentation
title: HABPanel
---
{% include base.html %}
<!-- Attention authors: If you want to improve or enhance this article, please go to: -->
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/issues -->
<!-- * https://github.com/openhab/org.openhab.ui.habpanel/blob/master/docs/habpanel.md -->
# Designing dashboard interfaces with HABPanel
The [HABPanel]({{base}}/addons/ui/habpanel/readme.html) user interface is installed by default when choosing any initial setup package, and allows the creation of user-friendly dashboards, particularly suited for (e.g. wall-mounted) tablets. These dashboards can be designed interactively in the embedded designer, rather than using configuration files.
Despite being similar, HABPanel's dashboards and [sitemaps]({{base}}/configuration/sitemaps.html) are separate concepts, and can be designed independently as they aren't related to each other; however, they rely and act on [items]({{base}}/concepts/items.html) which must therefore be [defined]({{base}}/configuration/items.html) first. The [demo setup package]({{base}}/configuration/packages.html#demo-package-sample-setup), available for installation when starting openHAB for the first time, defines a series of sample items and configures HABPanel with a comprehensive set of dashboards to showcase a possible end result. It's the same as the one installed on the [openHAB Demo Server](https://demo.openhab.org/){:target="_blank"}, and it may be modified without risk of breaking anything: it's the best playground to discover HABPanel's features.
## Concepts
HABPanel has its own terminology of entities presented below:
![HABPanel concepts](images/habpanel_concepts.png)
- The **Panel Registry** is the central storage used by HABPanel on a given openHAB instance, it contains several **Panel Configurations**;
- A **Panel Configuration** is a container holding a **Panel** along with its **Settings** and the definition of **Custom Widgets**. Each device HABPanel runs on (desktop browser, tablet...) has an active panel configuration and displays the panel associated with it;
- A **Panel** is a set of **Dashboards** (or pages) which can be presented to end users, who can also easily switch between them using the menu.
- A **Dashboard** is comprised of discrete **Widgets** positioned on the dashboard's surface at design time. There are several types of built-in *standard widgets*, configured separately, and the administrator can also develop (or import) *custom widgets*.
## About data persistence
By default, when running HABPanel on a new browser or device, a tutorial will be displayed allowing the user to start from scratch, or switch to an previously defined panel configuration. **Until a panel configuration is created (or chosen), HABPanel will run in "local storage" mode for this device: the settings will be retained in the browser's local storage only and nothing will be persisted on the server.** By contrast, when an active panel configuration is set, each change performed on the device will update the panel configuration on the server. This allows the sharing of panel configuration among devices, because other browsers and devices using this panel configuration will pick up the changes with a page refresh - this is useful for instance to design a panel comfortably on a computer, then use it on a tablet.
To switch from the local storage to a server-hosted panel configuration, go to the Settings page from the main menu or the side drawer (see below). A list of panel configurations will be presented in the _Current storage configuration_ section; if only the _"Local storage"_ option is available, click on the **Save the current configuration to a new panel configuration** link, give it a name to identify it (avoid spaces or special characters), and it should be added to the list. The radio button is also automatically checked, meaning it is now the active panel configuration.
Even when there is an active panel configuration, HABPanel uses the browser's storage to sync a locally-managed copy. With the **Edit the local panel configuration (experts only)** link under the _"Local storage"_ storage configuration option in the settings screen, the raw structure of the panel configuration can be inspected, modified, and exported or imported from/to a .json file. It is also an alternative way to backup, restore and share the configuration.
HABPanel uses service configuration variables to store its data on the openHAB server. They can be accessed using Paper UI (_Configuration > Services > UI > HABPanel > Configure_) or in the openHAB Karaf console:
```
openhab> config:edit org.openhab.habpanel
openhab> config:property-get <property>
```
The following properties are defined:
- `panelsRegistry`: contains the entire registry serialized in JSON, it is maintained by the application and shouldn't be modified directly (editing it by hand, while possible, is strongly discouraged);
- `lockEditing`: when enabled, all HABPanel instances will hide their editing features (a page refresh is necessary). When panels are complete and stable, it is advisable to turn on this setting so they cannot be easily modified by end users;
- `initialPanelConfig`: if this option is unset and no prior local configuration is detected, the tutorial will be displayed until some dashboards are added or a panel configuration is selected. This setting allows to bypass the tutorial and switch directly to the existing panel configuration with the given name.
## Major interface elements and features
### The main menu
The main menu is HABPanel's home page. It contains tiles linking to the panel's dashboards, and an icon to switch between the run mode and the edit mode (if available).
![Main menu - run mode](images/habpanel_main-menu-run.png)
Use the gears icon in the top-right corner to switch between the two modes.
![Main menu - edit mode](images/habpanel_main-menu-edit.png)
When in edit mode, several features are available:
* Add a new empty dashboard with the **Add new dashboard** link;
* Go to the settings screen (for instance, to switch from local storage to a server-managed panel configuration) by clicking on the **Advanced settings** link;
* Adjust the number of columns for the grid of main menu tiles with the slider, from 1 (the default) to 6;
* Drag the arrow icons in the top-left corner of each tile to move it;
* Resize tiles with the chevron (triangle) in the bottom-right corner of each tile;
* Configure the tiles and the dashboards themselves with the gears icons in the top-right corner of each tile;
* Enter the dashboard designer by clicking inside a tile.
The configuration dialog when clicking on a tile's gear icon contains the following settings:
| Setting | Description
|---------|-------------|
| Name | The name of the dashboard, also displayed on the tile
| Background URL | The URL of a background image *for the main menu tile*
| Backdrop Icon | Iconset and icon displayed on the tile as a Backdrop
| Center backdrop horizontally | When unchecked, the backdrop is aligned to the right of the tile; when checked, it is centered
| Icon | Icon associated with the dashboard, currently only used in the side drawer
| Size (icon) | _(currently unused)_
| Title Text Color | Color for the name of the dashboard on the tile
| Advanced tab | Contains settings currently unstable or unsupported, for advanced users only
| Custom widgets tab | This [experimental feature](https://community.openhab.org/t/new-display-options-incl-experimental-custom-widgets-everywhere/34140/1) allows certain parts of a dashboard to be replaced by a custom widget (see _Custom Widgets_ below): the main menu tile, the drawer menu and the dashboard item - use with caution
It also contains a **Delete** button which will delete the entire dashboard and its contents - this happens immediately and cannot be undone!
### The side drawer
![Side drawer](images/habpanel_side-drawer.png)
The side drawer can be accessed from any screen by a swipe or drag to the right (on most elements where there isn't a conflict with this gesture), or with the "hamburger icon" ☰ in the top-left corner.
It is comprised of three parts:
1. A **header** - clicking on it returns to the main menu. Note: if defined, the title of the panel is displayed instead of the default "HABPanel" label, it is configured in the settings (see below);
2. A **list of dashboards** for quick switching between dashboards without going back to the main menu - they are presented in the order of the menu (sorted by row, then by column);
3. A **footer** displaying the current date & time and featuring a link to the settings screen (if available).
### The dashboard designer
![Dashboard designer](images/habpanel_dashboard-designer.png)
The dashboard designer is where widgets can be added, positioned, resized and configured. Placeholders are displayed where actual widgets would be on the running dashboard.
To add a widget, use the **Add widget** button and choose among the list of standard widgets, or eventual custom widgets in the panel configuration.
See below for a description of the standard widgets.
![Add widget menu](images/habpanel_add-widget.png)
Use the header of a widget placeholder (with the four-arrow icon and the widget type) to move the widget. Moving a widget over other widgets do not push them away to make room (contrary to the main menu tiles), so ensure there is sufficient room for your widget before moving it.
![Widget placeholder features](images/habpanel_dashboard-designer-placeholder-menu.png)
When hovering over a placeholder (or tapping inside it if on a touch interface), a chevron appears in the bottom-right corner allowing to resize it.
Use the ellipsis icon **⁝** to bring up the widget's contextual menu, offering the following options:
- **Edit...:** Displays the configuration dialog for the widget. The options available in the dialog depend on the type of the widget and are detailed in the Widgets section;
- **Copy/move to...**: Displays a dialog allowing to clone the widget with its configuration, to the current dashboard or another, or move it to another dashboard (the target widget will retain its size of the source widget but it will be placed where there is available room, use the target dashboard's designer to find it and reposition it);
- **Delete**: Deletes the widget.
Modifications to the dashboard are not saved automatically, use the **Save** button in the header to commit the changes to the panel configuration (or local storage). The **Run** button also saves, then runs the dashboard.
### Running dashboards
![A running dashboard](images/habpanel_running-dashboard.png)
When a dashboard is running, widgets can be interacted with, and server-sent events are received when items' states are updated, so widgets update automatically in HABPanel.
The icons in the top-right corner perform the following:
- the **speech balloon** activates the speech recognition feature and send the results as text to openHAB's default human language interpreter. This implies [some configuration on the server]({{base}}/configuration/multimedia.html#human-language-interpreter), and this icon might not be displayed if the browser doesn't support voice recognition ([mainly only in Chrome and other webkit variants currently](http://caniuse.com/#feat=speech-recognition){:target="_blank"}). It can also be configured in the panel configuration to appear on the bottom of the screen;
- the **refresh** button forces HABPanel to retrieve the current state of all items;
- the **fullscreen** button tells the browser to go fullscreen, if supported.
Tip: while running a dasboard, append `?kiosk=on` to the URL in the web browser to switch to "kiosk mode"; in this mode, the header, hamburger menu and toolbar will be hidden and the side drawer will be disabled - therefore there will be no easy way for an end user to switch to another screen (except with button widgets configured for that purpose). This mode is useful to display a full-screen, bare-bones UI for a fixed tablet.
## Additional features and settings
Apart from the storage configuration discussed above, the settings screen contains several settings kept as part of the panel configuration (meaning they are set separately):
| Setting | Description
|---------|-------------|
| Panel name | An user-friendly name for the panel. It will be displayed in the header of the side drawer.
| Theme | HABPanel comes with a number of built-in themes, with this setting a different theme may applied to the panel. Themes are not user-modifiable.
| Background image | Sets the specified URL as background image for the whole panel. *Tip: the background image works best with the 'translucent' theme!*
| Additional stylesheet | Reference the relative URL of an additional CSS file which will be included and can be used to override the styles defined by the theme. For additional information on how you can customize HABPanel's styles, go to: [HABPanel Development & Advanced Features: Start Here!](https://community.openhab.org/t/habpanel-development-advanced-features-start-here/30755/1)
| Drawer heading image | Reference the URL of an image (expected width: 265 pixels) which will replace the header in the side drawer
| Hide the drawer's footer | Check to remove the bottom black part of the side drawer containing the date & time
| Hide toolbar buttons (speak/refresh/fullscreen) | Check those boxes to hide the corresponding button in the default dashboard header top-right corner
| Show a clock in the header | If checked, a clock will be displayed in the main menu and the dashboards
| Header clock format (shown if "Show a clock in the header" is checked) | Use an [AngularJS' date filter format string](https://docs.angularjs.org/api/ng/filter/date) to customize the clock format in the header. The default is `HH:mm`
| Prevent scrolling (when not editing) | When enabled, it is impossible to scroll the dashboard on a tablet (and it prevents the "elastic" bouncing effect on iOS/Safari)
| Manage > (custom widgets) | Goes to the list of custom widget definitions for the active panel configuration
| Voice | Selects a voice from the detected list for text-to-speech*
| Speak the new value of the following item when it changes | When the selected String item change to a new text, HABPanel will use the browser's text-to-speech engine and the selected voice to read it aloud*
| Display a floating speech button at the bottom of the screen | Use an alternative style for the Speak (voice input) button in dashboards
| When this item changes to a dashboard's name, switch to it | This allows controlling the currently displayed dashboard by an openHAB item (useful with rules and as a side-effect to commands)
*Note: the text-to-speech functionality featured in HABPanel is unrelated to the [TTS services]({{base}}/configuration/multimedia.html#text-to-speech) defined on the openHAB server, and they are not compatible (this is why a String item is required and the `say()` function cannot be used). However, HABPanel will play audio streamed through the ['webaudio' sink]({{base}}/configuration/multimedia.html#audio), including spoken text.
## Widgets
### Standard widgets
The following built-in widgets are available:
#### Dummy (dummy)
![Dummy widget](images/habpanel_widget-dummy.png)
The so-called dummy widget (whose name is explained by historical reasons - it evolved from the first developed widget) displays the current state of an item without any interactivity, along with a label and an optional icon.
#### Switch (switch)
![Switch widget](images/habpanel_widget-switch.png)
The switch widget is a simple widget to control a Switch item as defined in openHAB - it reports its state and is able to toggle it between ON and OFF.
#### Label (label)
![Label widget](images/habpanel_widget-label.png)
The label widget is straightforward: it simply displays a fixed text and has a few appeareance options (color, font). It can for example be used as a header for a group of widgets below it.
#### Button (button)
![Button widget](images/habpanel_widget-button.png)
The button widget can be clicked (or tapped) and will perform an action, like sending commands to an item or navigating to another dashboard. It can also adjust its colors depending on the state of the underlying item.
Multiple buttons are often used together to present different options for an item.
#### Slider (slider)
![Slider widget](images/habpanel_widget-slider.png)
The slider widget can reflect the state of, and update, numerical items within a range of values. Several options are available to alter its appearance and behavior.
#### Knob (knob)
![Knob widget](images/habpanel_widget-knob.png)
The knob widget is similar in essence to the slider, but in a rotary fashion. It also offers extensive configurability over its appearance and behavior.
#### Selection (selection)
![Selection widget](images/habpanel_widget-selection.png)
The selection widget displays the current state of an item, much like a dummy widget, except it opens a menu or a grid of automatically or manually configured choices for sending commands to this item. Various display options are available.
#### Color picker (colorpicker)
![Color picker widget](images/habpanel_widget-colorpicker.png)
The color picker widget offers several ways of displaying and updating the state of an openHAB Color item (or group).
#### Image (image)
![Image widget](images/habpanel_widget-image.png)
The image widget can display an image, directly or via an openHAB String item, and can refresh it at regular intervals.
#### Frame (frame)
![Frame widget](images/habpanel_widget-frame.png)
The frame widget displays an external web page in a HTML `<iframe>`.
#### Clock (clock)
![Clock widget](images/habpanel_widget-clock.png)
The clock widget displays an analog or digital clock. It can also be used to display the current date.
#### Chart (chart)
![Chart widget](images/habpanel_widget-chart.png)
The chart widget can leverage openHAB persistence services to plot numerical series over a time period. It can also display server-generated chart images (default or rrd4j variants).
#### Timeline (timeline)
![Timeline widget](images/habpanel_widget-timeline.png)
The timeline widget is the chart widget's counterpart for non-numerical items. It can display multiple "swimlanes" of items with color-coded slices representing their state changes during the selected period. Hovering or tapping inside a color slice displays details on the state of the item at the time.
#### Template (template)
The template widget allows an user-configured AngularJS HTML template to be rendered and hosted inside the widget boundaries; it exposes several helper functions and other facilities to retrieve and update openHAB's items from the template's markup.
With only a few web development skills required, you can easily start developing your own widgets and share them to community. It is nonetheless rather complex, so the best information has been compiled in this community wiki topic: [HABPanel Development & Advanced Features: Start Here!](https://community.openhab.org/t/habpanel-development-advanced-features-start-here/30755). You can also [learn by example in the forum's HABPanel category](https://community.openhab.org/c/apps-services/habpanel) or seek the help of the community.
Templates are defined inline, for each particular instance, and thus are not optimized for sharing and re-use. For those cases, developing a _custom widget_ is more appropriate.
### Custom widgets
Custom widgets are similar to (and based on) the template widget but are designed to be reused, shared, and configured. A custom widget is an AngularJS template with an associated set of configuration settings. It can be added to dashboards and configured individually, like a built-in widget. Definitions of custom widgets are stored in the registry at the panel configuration level; this means they are specific to a panel configuration and each panel configuration has its own custom widgets (see the _Concepts_ section above).
For more information, please read the [community thread about this feature](https://community.openhab.org/t/custom-widgets-feature-walkthrough/16670/1).
#### Managing custom widgets
The list of custom widgets either via the dashboard designer (click/tap the gears icon in the _Add Widget_ dropdown menu), or with the _Manage_ button in the settings screen.
From the list, custom widgets can be created from scratch, or imported from a previously exported .json file or a GitHub repository. Members of the openHAB community also present their custom widgets on the forum: the _Get widgets from the openHAB community_ link brings up a filtered lists of custom widgets from the community.
Widgets can also come from [an openHAB addon or OSGi bundle](https://community.openhab.org/t/new-feature-globally-provisioned-widgets-i-e-with-osgi-bundles/26994): those are "globally-provisioned widgets". They cannot be modified or deleted (but can be cloned and then modified), and are available to all panel configurations.
The context menu **⁝** can be used to perform operations on the widget: globally-provisioned widgets can only be cloned, and manually defined or imported widgets can be exported or deleted. Widgets imported from GitHub can also be updated and include a link to repository's Readme file.
#### The widget designer
Upon clicking on a custom widget definition, the widget designer opens. It contains three tabs:
- **Code:** This tab is an editor for the template's code. You can use the Ctrl-S (or Cmd-S) keyboard shortcut to save the widget while editing the code;
- **Settings:** This tab hosts the widget's general settings and configuration settings structure to be defined.
Click on the **Add setting** to add a new configuration setting. Each configuration setting must have a type, a technical ID, and other optional attributes. Each type of setting determines the UI element presented in the dashboard designer when configuring instances of the custom widget.
Use the arrow buttons to move configuration settings up or down, and the trash bin icon to remove them.
When instantiated, the value of configuration settings are set in the template's scope as `config.<setting_id>` (except those of type Icon which define an additional value, the iconset name, as `config.<setting_id>_iconset`);
- **Preview:** Upon switching to this tab, a test instance of the widget is rendered in an otherwise blank testbed dashboard. Use the sliders to resize the widget in order to preview it at different sizes. If it defines configuration settings, they must likely be set for this preview using the gears icon: this will bring up the widget instance's configuration dialog as it would appear in the dashboard designer.
Don't forget to save the changes with the **Save** button.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Some files were not shown because too many files have changed in this diff Show More