Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pushsafer] Initial Contribution of Pushsafer Binding #10790

Merged
merged 3 commits into from
Jul 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@
/bundles/org.openhab.binding.pulseaudio/ @peuter
/bundles/org.openhab.binding.pushbullet/ @hakan42
/bundles/org.openhab.binding.pushover/ @cweitkamp
/bundles/org.openhab.binding.pushsafer/ @appzer @cweitkamp
/bundles/org.openhab.binding.qbus/ @QbusKoen
/bundles/org.openhab.binding.radiothermostat/ @mlobstein
/bundles/org.openhab.binding.regoheatpump/ @crnjan
Expand Down
5 changes: 5 additions & 0 deletions bom/openhab-addons/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1166,6 +1166,11 @@
<artifactId>org.openhab.binding.pushover</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.binding.pushsafer</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.binding.radiothermostat</artifactId>
Expand Down
13 changes: 13 additions & 0 deletions bundles/org.openhab.binding.pushsafer/NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
This content is produced and maintained by the openHAB project.

* Project home: https://www.openhab.org

== Declared Project Licenses

This program and the accompanying materials are made available under the terms
of the Eclipse Public License 2.0 which is available at
https://www.eclipse.org/legal/epl-2.0/.

== Source Code

https://github.com/openhab/openhab-addons
54 changes: 54 additions & 0 deletions bundles/org.openhab.binding.pushsafer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Pushsafer Binding

The Pushsafer binding allows you to notify mobile devices of a message using the [Pushsafer API](https://www.pushsafer.com/pushapi).
To get started you first need to register (a free process) to get a Private Key.
Initially you have to register a device with one of the [client apps](https://www.pushsafer.com/apps), to get a device id.

## Supported Things

There is only one Thing available - the `pushsafer-account`.
You are able to create multiple instances of this Thing to broadcast to different devices or groups with push-notification content and setting.

## Thing Configuration

| Configuration Parameter | Type | Description |
|-------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| `apikey` | text | Your private-key to access the Pushsafer [Message API](https://www.pushsafer.com/pushapi). **mandatory** |
| `user` | text | Your username or email address to validate against the Pushsafer Message API. **mandatory** |
| `device` | text | Your device or group id to which device(s) you want to push notifications. **mandatory** |
| `title` | text | The default title of a message (default: `"openHAB"`). |
| `format` | text | The default format (`"none"`, `"HTML"` or `"monospace"`) of a message (default: `none`). |
| `sound` | text | The default notification sound on target device (default: `1`) (see [supported notification sounds](https://www.pushsafer.com/pushapi#api-sound)). |
| `vibration` | text | How often the device should vibrate. empty=device default or a number 1-3. |
| `icon` | text | The default notification icon on target device (default: `1`) (see [supported notification icons](https://www.pushsafer.com/pushapi#api-icon)). |
| `color` | text | The color (hexadecimal) of notification icon (e.g. #FF0000). |
| `url` | text | URL or [URL Scheme](https://www.pushsafer.com/url_schemes) send with notification. |
| `urlTitle` | text | Title of URL. |
| `retry` | integer | The retry parameter specifies how often (in seconds) the Pushsafer servers will send the same notification to the user (default: `300`). **advanced** |
| `expire` | integer | The expire parameter specifies how long (in seconds) your notification will continue to be retried (default: `3600`). **advanced** |
| `confirm` | integer | Integer 10-10800 (10s steps) Time in seconds after which a message should be sent again before it is confirmed. (default: `0`). **advanced** |
| `time2live` | integer | Time in minutes, after a message automatically gets purged (default: `0`). **advanced** |
| `answer` | integer | 1 = enables reply to push notifications (default: `0`). **advanced** |

The `retry` and `expire` parameters are only used for emergency-priority notifications.

## Channels

Currently the binding does not support any Channels.

## Thing Actions

All actions return a `Boolean` value to indicate if the message was sent successfully or not.
The parameter `message` is **mandatory**, the `title` parameter defaults to whatever value you defined in the `title` related configuration parameter.

- `sendPushsaferMessage(String message, @Nullable String title)` - This method is used to send a plain text message.

- `sendPushsaferHtmlMessage(String message, @Nullable String title)` - This method is used to send a HTML message.

- `sendPushsaferMonospaceMessage(String message, @Nullable String title)` - This method is used to send a monospace message.

- `sendPushsaferAttachmentMessage(String message, @Nullable String title, String attachment, @Nullable String contentType, @Nullable String authentication)` - This method is used to send a message with an image attachment. It takes a local path or url to the image attachment (parameter `attachment` **mandatory**), an optional `contentType` to define the content-type of the attachment (default: `"jpeg"`, possible values: `"jpeg"`, `"png"`, `"gif"`) and an optional `authentication` for the given URL to define the authentication if needed (default: `""`, example: `"user:password"`).

- `sendPushsaferURLMessage(String message, @Nullable String title, String url, @Nullable String urlTitle)` - This method is used to send a message with an URL. A supplementary `url` to show with the message and a `urlTitle` for the URL, otherwise just the URL is shown.

- `sendPushsaferPriorityMessage(String message, @Nullable String title, @Nullable Integer priority)` - This method is used to send a priority message. Parameter `priority` is the priority (`-2`, `-1`, `0`, `1`, `2`) to be used (default: `2`).
17 changes: 17 additions & 0 deletions bundles/org.openhab.binding.pushsafer/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.addons.reactor.bundles</artifactId>
<version>3.2.0-SNAPSHOT</version>
</parent>

<artifactId>org.openhab.binding.pushsafer</artifactId>

<name>openHAB Add-ons :: Bundles :: Pushsafer Binding</name>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<features name="org.openhab.binding.pushsafer-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository>

<feature name="openhab-binding-pushsafer" description="Pushsafer Binding" version="${project.version}">
<feature>openhab-runtime-base</feature>
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.pushsafer/${project.version}</bundle>
</feature>
</features>
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/**
* Copyright (c) 2010-2021 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.pushsafer.internal;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.thing.ThingTypeUID;

/**
* The {@link PushsaferBindingConstants} class defines common constants, which are used across the whole binding.
*
* @author Kevin Siml - Initial contribution, forked from Christoph Weitkamp
*/
@NonNullByDefault
public class PushsaferBindingConstants {

private static final String BINDING_ID = "pushsafer";

public static final ThingTypeUID PUSHSAFER_ACCOUNT = new ThingTypeUID(BINDING_ID, "pushsafer-account");

public static final String CONFIG_SOUND = "sound";
public static final String CONFIG_ICON = "icon";

public static final String ALL_DEVICES = "a";
public static final String DEFAULT_SOUND = "";
public static final String DEFAULT_ICON = "1";
public static final String DEFAULT_COLOR = "";
public static final String DEFAULT_URL = "";
public static final String DEFAULT_URLTITLE = "";
public static final String DEFAULT_VIBRATION = "1";
public static final int DEFAULT_CONFIRM = 0;
public static final boolean DEFAULT_ANSWER = false;
public static final int DEFAULT_TIME2LIVE = 0;
public static final String DEFAULT_TITLE = "openHAB";
}
Loading