Zunächst: Bei Problemen mit Blacklisting ist der erste empfohlene Versuch eigentlich immer, eine erneute Einwahl zu erzwingen. Dabei bekommst Du gewöhnlich eine neue öffentliche IP zugewiesen und der Zugriff sollte wieder funktionieren.
Bezüglich des "eigentlichen" Problems, ausgehend von der Origianl-Rule von oben musst Du lediglich die Codezeile korrekt einbauen:
Code: Alles auswählen
var Timer tTrockner = null
rule "Trocker fertig"
when
Item trocknerLeistung changed
then
if((newState as Number).intValue > 25) {
tTrockner?.cancel
tTrockner = null
return;
}
if(tTrockner === null)
tTrockner = createTimer(now.plusMinutes(4),[|
Alexa_Esszimmer_Sprich.sendCommand('Der Wäschetrockner ist fertig')
tTrockner = null
])
endAlternativ kannst Du den gleichen Code auch über die UI verwenden. Aber Achtung... ein Teil des Codes oben ist nicht Teil des Programms, sondern der "Rahmen" der Rule, in dem die Trigger für die Rule definiert werden, entsprechend sieht der Code dennoch etwas anders aus. Du kannst über die UI eine Rule erzeugen und den yaml Code ersetzen. Der yaml Code enthält alles außer der rule UID, welche Du nachträglich auch nicht mehr ändern kannst und dem Label der Rule.
Code: Alles auswählen
configuration: {}
triggers:
- id: "0"
configuration:
itemName: trocknerLeistung
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: script
configuration:
type: application/vnd.openhab.dsl.rule
script: >
if((newState as Number).intValue > 25) {
(privateCache.remove('tTrockner') as Timer)?.cancel
return;
}
if(privateCache.get('tTrockner')) === null)
privateCache.put('tTrockner', createTimer(now.plusMinutes(4),[|
Alexa_Esszimmer_Sprich.sendCommand('Der Wäschetrockner ist fertig')
privateCache.remove('tTrockner')
]))
type: script.ScriptActionDu kannst selbstverständlich die Rule auch mit JavaScript schreiben (das ist der Code, den Du weiter oben verwendet hast), aber da wäre meine Empfehlung, vielleicht gleich auf die grafische Variante Blockly auszuweichen, gerade Anfänger haben damit oftmals weniger Stress, weil die UI Dir "sagt", was Du alles ausfüllen musst. Der entstehende Code ist dann in den grafischen Teil und den "eigentlichen" Code unterteilt, so dass Du Dir den JavaScript Code prima als Beispiel anschauen kannst.