Seite 1 von 1

[GELÖST] Pushover Master Rule für senden von Nachrichten aus verschiedenen Rules

Verfasst: 15. Mär 2023 19:00
von Selter
Hallo zusammen,

ich hoffe, hier kann mir jemand weiterhelfen.

Ich würde gerne eine zentrale Pushover-Rule habe, die aus anderen Rules mittels

Code: Alles auswählen

PushoverMessage.postUpdate([Value])
getriggert wird und je nach [Value] die entsprechende Nachricht versendet.

Code: Alles auswählen

rule "Pushover Master"
when
    Item PushoverMessage received update
then
    logInfo("PUSHOVERMASTER","Rule getriggert")
    if (PushoverMessage.state == 1) {
            logInfo("PUSHOVERMASTER","Washer is FINISHED as it was ACTIVE before - POMASTER")
            val actions = getActions("pushover", "pushover:pushover-account:soundBike")
            actions.sendHtmlMessage("Washer is FINISHED as it was ACTIVE before - POMASTER", "openHAB3")
    }
    if (PushoverMessage.state == 2) {
            logInfo("PUSHOVERMASTER","Dishwasher is FINISHED as it was ACTIVE before - POMASTER")
            val actions = getActions("pushover", "pushover:pushover-account:soundBike")
            actions.sendHtmlMessage("Dishwasher is FINISHED as it was ACTIVE before - POMASTER", "openHAB3")
    }
    else {
        return
    }

end
Leider bekomme ich keine Nachrichten, sondern im Log einen Fehler:

Code: Alles auswählen

[INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PushoverMessage' changed from 2 to 1
[INFO ] [hab.core.model.script.PUSHOVERMASTER] - Rule getriggert
[INFO ] [hab.core.model.script.PUSHOVERMASTER] - Washer is FINISHED as it was ACTIVE before - POMASTER
[ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'pushovermaster-1' failed: null in pushovermaster

Re: Pushover Master Rule für senden von Nachrichten aus verschiedenen Rules

Verfasst: 15. Mär 2023 20:47
von udo1toni
Mit Pushover kenne ich mich nicht aus, aber mit Rules :)

Etwas eleganter:

Code: Alles auswählen

rule "Pushover Master"
when
    Item PushoverMessage received update
then
    val poAction = getActions("pushover", "pushover:pushover-account:soundBike")
    logInfo("pushover","Rule getriggert")
    switch(PushoverMessage.state.toString) {
        case "1" : {
            logInfo("pushover","Washer is FINISHED as it was ACTIVE before - POMASTER")
            poAction.sendHtmlMessage("Washer is FINISHED as it was ACTIVE before - POMASTER", "openHAB3")
        }
        case "2" : {
            logInfo("pushover","Dishwasher is FINISHED as it was ACTIVE before - POMASTER")
            poAction.sendHtmlMessage("Dishwasher is FINISHED as it was ACTIVE before - POMASTER", "openHAB3")
        }
        default: {
            logInfo("pushover","Message Value not acceptable: {}",PushoverMessage.state)
        }
    }
end
Du kannst beliebig viele case - Blöcke einbauen. default wird ausgeführt, wenn kein vorheriger Block zutrifft.

Das return in Deinem Code ist so nicht zulässig. Vermutlich ist dies der Grund für die null-Message. Warum allerdings das Pushover nicht funktioniert, ist damit noch nicht geklärt. Ich gehe davon aus, dass das Binding so weit korrekt eingerichtet ist?

Ach so... Es reicht, getActions zu Beginn der Rule auszuführen (anders sieht es aus, wenn Du NAchriten verzögert senden willst, also mit einem Timer arbeitest - das ist hier aber nicht der Fall)

Re: Pushover Master Rule für senden von Nachrichten aus verschiedenen Rules

Verfasst: 15. Mär 2023 21:15
von int5749
Ich habe den Aufruf

Code: Alles auswählen

actions.sendHtmlMessage("Washer is FINISHED as it was ACTIVE before - POMASTER", "openHAB3")
gerade einmal bei mir getestet und dieser funktioniert.

Da der Fehler nach dem Log-Eintrag erfolgt, vermute ich einen Fehler im Pushover-Thing.
Denn wenn getActions einnen Fehler liefert, bleibt actions = null

Viele Grüße

Re: Pushover Master Rule für senden von Nachrichten aus verschiedenen Rules

Verfasst: 23. Mär 2023 14:49
von Selter
Ich komme hier immer noch nicht weiter ...

Diese Rule z.B. funktioniert:

Code: Alles auswählen

rule "Flutsensor Keller Entfeuchter"                                               
    when
        Item KE_s_xflut2_leak changed to ON
    then
        val actions = getActions("pushover", "pushover:pushover-account:soundMechanical")
        actions.sendHtmlMessage("<font color='blue'>Keller: Luftentfeuchter - Tank voll</font>", "openHAB3") 
        
		logInfo("FLUTSENSOR", "--> Keller: Luftentfeuchter - Tank voll")
        
		Thread::sleep(100)
        val telegramAction = getActions("telegram","telegram:telegramBot:dirk")
        telegramAction.sendTelegram("Keller: Luftentfeuchter - Tank voll")
end
Der Pushover-Aufruf ist hier doch nahezu identisch.

Re: Pushover Master Rule für senden von Nachrichten aus verschiedenen Rules

Verfasst: 23. Mär 2023 16:36
von udo1toni
Na ja, aber das ist ein anderes Thing als oben.

Re: Pushover Master Rule für senden von Nachrichten aus verschiedenen Rules

Verfasst: 23. Mär 2023 19:31
von Selter
Ich danke Euch!!!
Tatsächlich gab es das Thing nicht ... jetzt funktioniert es

Code: Alles auswählen

Thing pushover:pushover-account:soundBike		[ apikey="xxxxxx", user="yyyyyy", sound="bike" ]

Re: [GELÖST] Pushover Master Rule für senden von Nachrichten aus verschiedenen Rules

Verfasst: 23. Mär 2023 20:19
von udo1toni
:)