mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-02-04 19:34:05 +01:00
[prowl] Added the message priority setting feature (#12647)
Signed-off-by: Ondrej Pecta <opecta@gmail.com>
This commit is contained in:
parent
433ab4dcd4
commit
ad71ca0055
@ -36,8 +36,10 @@ _*.rules_
|
|||||||
Once you have created the broker thing with a valid API key, you can use the Prowl service in your rules.
|
Once you have created the broker thing with a valid API key, you can use the Prowl service in your rules.
|
||||||
First you need to create an instance of the broker just before any call or on the top rules level. (replace the _mybroker_ with the right name of your instance).
|
First you need to create an instance of the broker just before any call or on the top rules level. (replace the _mybroker_ with the right name of your instance).
|
||||||
Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_.
|
Then you can call method _pushNotification_, which requires two parameters - _event_ and _description_.
|
||||||
|
There is also an optional third parameter _priority_ which represents the message priority (very low) -2,-1,0,1,2 (emergency). The default priority is 0.
|
||||||
|
|
||||||
```
|
```
|
||||||
val prowl = getActions("prowl","prowl:broker:mybroker")
|
val prowl = getActions("prowl","prowl:broker:mybroker")
|
||||||
prowl.pushNotification("Event", "This is the description of the event")
|
prowl.pushNotification("Event", "This is the description of the event")
|
||||||
|
prowl.pushNotification("Emergency Event", "This is the description of the event", 2)
|
||||||
```
|
```
|
||||||
|
@ -49,7 +49,7 @@ public class ProwlHandler extends BaseThingHandler {
|
|||||||
private final Logger logger = LoggerFactory.getLogger(ProwlHandler.class);
|
private final Logger logger = LoggerFactory.getLogger(ProwlHandler.class);
|
||||||
|
|
||||||
private ProwlConfiguration config = new ProwlConfiguration();
|
private ProwlConfiguration config = new ProwlConfiguration();
|
||||||
final private HttpClient httpClient;
|
private final HttpClient httpClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Future to poll for status
|
* Future to poll for status
|
||||||
@ -117,17 +117,27 @@ public class ProwlHandler extends BaseThingHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void pushNotification(@Nullable String event, @Nullable String description) {
|
public void pushNotification(@Nullable String event, @Nullable String description) {
|
||||||
|
pushNotification(event, description, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pushNotification(@Nullable String event, @Nullable String description, int priority) {
|
||||||
if (event == null || description == null) {
|
if (event == null || description == null) {
|
||||||
logger.debug("Cannot push message with null event or null description");
|
logger.debug("Cannot push message with null event or null description");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (priority < -2) {
|
||||||
|
priority = -2;
|
||||||
|
} else if (priority > 2) {
|
||||||
|
priority = 2;
|
||||||
|
}
|
||||||
|
|
||||||
logger.debug("Pushing an event: {} with desc: {}", event, description);
|
logger.debug("Pushing an event: {} with desc: {}", event, description);
|
||||||
try {
|
try {
|
||||||
ContentResponse response = httpClient.POST(PROWL_ADD_URI).timeout(5, TimeUnit.SECONDS)
|
ContentResponse response = httpClient.POST(PROWL_ADD_URI).timeout(5, TimeUnit.SECONDS)
|
||||||
.content(
|
.content(
|
||||||
new StringContentProvider("apikey=" + config.apiKey + "&application=" + config.application
|
new StringContentProvider("apikey=" + config.apiKey + "&application=" + config.application
|
||||||
+ "&event=" + event + "&description=" + description),
|
+ "&event=" + event + "&description=" + description + "&priority=" + priority),
|
||||||
"application/x-www-form-urlencoded; charset=UTF-8")
|
"application/x-www-form-urlencoded; charset=UTF-8")
|
||||||
.send();
|
.send();
|
||||||
String resp = response.getContentAsString();
|
String resp = response.getContentAsString();
|
||||||
|
@ -57,10 +57,29 @@ public class ProwlActions implements ThingActions {
|
|||||||
handler.pushNotification(event, message);
|
handler.pushNotification(event, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RuleAction(label = "@text/pushNotificationActionLabel", description = "@text/pushNotificationActionDescription")
|
||||||
|
public void pushNotification(
|
||||||
|
@ActionInput(name = "event", label = "@text/pushNotificationActionEventLabel", description = "@text/pushNotificationActionEventDescription") @Nullable String event,
|
||||||
|
@ActionInput(name = "message", label = "@text/pushNotificationActionMessageLabel", description = "@text/pushNotificationActionMessageDescription") @Nullable String message,
|
||||||
|
@ActionInput(name = "priority", label = "@text/pushNotificationActionPriorityLabel", description = "@text/pushNotificationActionPriorityDescription") int priority) {
|
||||||
|
ProwlHandler clientHandler = handler;
|
||||||
|
if (clientHandler == null) {
|
||||||
|
logger.warn("Prowl ThingHandler is null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
handler.pushNotification(event, message, priority);
|
||||||
|
}
|
||||||
|
|
||||||
public static void pushNotification(@Nullable ThingActions actions, @Nullable String event,
|
public static void pushNotification(@Nullable ThingActions actions, @Nullable String event,
|
||||||
@Nullable String description) {
|
@Nullable String description) {
|
||||||
|
pushNotification(actions, event, description, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void pushNotification(@Nullable ThingActions actions, @Nullable String event,
|
||||||
|
@Nullable String description, int priority) {
|
||||||
if (actions instanceof ProwlActions) {
|
if (actions instanceof ProwlActions) {
|
||||||
((ProwlActions) actions).pushNotification(event, description);
|
((ProwlActions) actions).pushNotification(event, description, priority);
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Instance is not a ProwlActions class.");
|
throw new IllegalArgumentException("Instance is not a ProwlActions class.");
|
||||||
}
|
}
|
||||||
|
@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Event
|
|||||||
pushNotificationActionEventDescription = Event name.
|
pushNotificationActionEventDescription = Event name.
|
||||||
pushNotificationActionMessageLabel = Message
|
pushNotificationActionMessageLabel = Message
|
||||||
pushNotificationActionMessageDescription = Message text.
|
pushNotificationActionMessageDescription = Message text.
|
||||||
|
pushNotificationActionPriorityLabel = Priority
|
||||||
|
pushNotificationActionPriorityDescription = Message priority (-2,-1,0,1,2).
|
||||||
|
@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evénement
|
|||||||
pushNotificationActionEventDescription = Nom de l'événement.
|
pushNotificationActionEventDescription = Nom de l'événement.
|
||||||
pushNotificationActionMessageLabel = Message
|
pushNotificationActionMessageLabel = Message
|
||||||
pushNotificationActionMessageDescription = Texte du message.
|
pushNotificationActionMessageDescription = Texte du message.
|
||||||
|
pushNotificationActionPriorityLabel = Priorité
|
||||||
|
pushNotificationActionPriorityDescription = Priorité du message (-2,-1,0,1,2).
|
||||||
|
@ -30,3 +30,5 @@ pushNotificationActionEventLabel = Evento
|
|||||||
pushNotificationActionEventDescription = Nome evento.
|
pushNotificationActionEventDescription = Nome evento.
|
||||||
pushNotificationActionMessageLabel = Messaggio
|
pushNotificationActionMessageLabel = Messaggio
|
||||||
pushNotificationActionMessageDescription = Testo del messaggio.
|
pushNotificationActionMessageDescription = Testo del messaggio.
|
||||||
|
pushNotificationActionPriorityLabel = Priorità
|
||||||
|
pushNotificationActionPriorityDescription = Priorità del messaggio (-2,-1,0,1,2).
|
||||||
|
Loading…
Reference in New Issue
Block a user