Amazon Echo Timer unter OH4.0.2
-
- Beiträge: 40
- Registriert: 9. Feb 2023 05:37
Amazon Echo Timer unter OH4.0.2
Hallo,
Kann mir jemand sagen warum der Echo Countdown ( https://community.openhab.org/t/amazon- ... own/116389 ) unter OH4 nicht mehr funktioniert?
Meine Items zeigen alle nur noch NULL an (nur das mit dem Echo verlinkte Item funktioniert ordnungsgemäß)
Danke und schonmal ein schönes WE
Kann mir jemand sagen warum der Echo Countdown ( https://community.openhab.org/t/amazon- ... own/116389 ) unter OH4 nicht mehr funktioniert?
Meine Items zeigen alle nur noch NULL an (nur das mit dem Echo verlinkte Item funktioniert ordnungsgemäß)
Danke und schonmal ein schönes WE
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Amazon Echo Timer unter OH4.0.2
Von Welcher Version kommst Du? Wie sieht Deine (exakte) Rule dazu aus? Wie sehen die (exakten) Item Definitionen aus?
Grundsätzlich sollte sich nichts geändert haben, es kann aber sein, dass Itemdefinitionen und Änderungen in der Rule Engine hier Anpassungen notwendig machen.
Grundsätzlich sollte sich nichts geändert haben, es kann aber sein, dass Itemdefinitionen und Änderungen in der Rule Engine hier Anpassungen notwendig machen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 40
- Registriert: 9. Feb 2023 05:37
Re: Amazon Echo Timer unter OH4.0.2
Guten Morgen Udo,
Ich habe vier items:
- EchoKuche_NachsterTimer, Datetime, mit Echochannel next Timer verlinkt
-EchoKuche_Countdown, Datetime, dummy, State Description %1$tH:%1$tM:%1$tS
-EchoKuche_NachsterTimerMaxSekunden, number, dummy
-EchoKuche_NachsterTimerSekunden, number, dummy
Die rules:
Start
Ende
Countdown
Danke für die Hilfe
Ich habe vier items:
- EchoKuche_NachsterTimer, Datetime, mit Echochannel next Timer verlinkt
-EchoKuche_Countdown, Datetime, dummy, State Description %1$tH:%1$tM:%1$tS
-EchoKuche_NachsterTimerMaxSekunden, number, dummy
-EchoKuche_NachsterTimerSekunden, number, dummy
Die rules:
Start
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: EchoKuche_NachsterTimer
previousState: UNDEF
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/javascript
script: >-
var zdt = Java.type('java.time.ZonedDateTime'); var duration =
Java.type('java.time.Duration'); var localTime =
Java.type('java.time.LocalTime'); var chronunit =
Java.type('java.time.temporal.ChronoUnit');
var alarm = itemRegistry.getItem("EchoKuche_NachsterTimer").state; var countdown = itemRegistry.getItem("EchoKuche_Countdown"); var coutndownMaxSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerMaxSekunden"); var coutndownSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerSekunden"); var jetzt = zdt.now().toLocalTime(); var alarmTime = alarm.getZonedDateTime().toLocalTime(); var diff = duration.between(jetzt, alarmTime); var startime = localTime.of(0, 0, 0).plus(diff).truncatedTo(chronunit.SECONDS);
events.postUpdate(countdown, startime.toString()); events.postUpdate(coutndownMaxSekunden, diff.getSeconds()); events.postUpdate(coutndownSekunden, diff.getSeconds());
type: script.ScriptAction
- inputs: {}
id: "3"
configuration:
enable: true
ruleUIDs:
- 81f01c329e
type: core.RuleEnablementAction
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: EchoKuche_NachsterTimer
state: UNDEF
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
enable: false
ruleUIDs:
- 81f01c329e
type: core.RuleEnablementAction
- inputs: {}
id: "3"
configuration:
type: application/javascript
script: >-
var localTime = Java.type('java.time.LocalTime');
var countdown = itemRegistry.getItem("EchoKuche_Countdown"); var coutndownSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerSekunden"); var startime = localTime.of(0, 0, 0);
events.postUpdate(countdown, startime.toString()); events.postUpdate(coutndownSekunden, 0);
type: script.ScriptAction
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
cronExpression: "* * * * * ? *"
type: timer.GenericCronTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/javascript
script: >-
var zdt = Java.type('java.time.ZonedDateTime'); var duration =
Java.type('java.time.Duration'); var localTime =
Java.type('java.time.LocalTime'); var chronunit =
Java.type('java.time.temporal.ChronoUnit');
var alarm = itemRegistry.getItem("EchoKuche_NachsterTimer").state; var countdown = itemRegistry.getItem("EchoKuche_Countdown"); var coutndownSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerSekunden");
var jetzt = zdt.now().toLocalTime(); var alarmTime = alarm.getZonedDateTime().toLocalTime(); var diff = duration.between(jetzt, alarmTime); var startime = localTime.of(0, 0, 0).plus(diff).truncatedTo(chronunit.SECONDS);
events.postUpdate(countdown, startime.toString()); events.postUpdate(coutndownSekunden, diff.getSeconds());
type: script.ScriptAction
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Amazon Echo Timer unter OH4.0.2
Die Rules sind hervorragende Beispiele, warum ich JavaScript in openHAB als unnötig empfinde. 
Egal... Hast Du JavaScript Scripting installiert? in openHAB4 ist das nicht automatisch eingerichtet.
Meines Wissens sind einige Klimmzüge, die früher unvermeidbar waren, jetzt nicht mehr notwendig.
Da müsstest Du allerdings selbst die Doku für openHAB JavaScript Scripting lesen, mit JavaScript Scripting beschäftige ich mich eher nicht.
PS: Aus irgendeinem Grund ist der Code in Deinen Rules komplett falsch umgebrochen. Für die Ausführung hat das keine Auswirkungen, wohl aber für die Lesbarkeit. Eine Anweisung in JavaScript endet mit einem Semikolon, Du kannst Also erst mal alle Zeilen nach jedem Semikolon umbrechen. Bleiben nun Zeilen übrig, die nicht mit einme Semikolon enden, so kannst Du die nachfolgende Zeile mit dieser Zeile verbinden. Dann sehen die Rules so aus:
und man kann besser verstehen, was da passiert.

Egal... Hast Du JavaScript Scripting installiert? in openHAB4 ist das nicht automatisch eingerichtet.
Meines Wissens sind einige Klimmzüge, die früher unvermeidbar waren, jetzt nicht mehr notwendig.
Da müsstest Du allerdings selbst die Doku für openHAB JavaScript Scripting lesen, mit JavaScript Scripting beschäftige ich mich eher nicht.
PS: Aus irgendeinem Grund ist der Code in Deinen Rules komplett falsch umgebrochen. Für die Ausführung hat das keine Auswirkungen, wohl aber für die Lesbarkeit. Eine Anweisung in JavaScript endet mit einem Semikolon, Du kannst Also erst mal alle Zeilen nach jedem Semikolon umbrechen. Bleiben nun Zeilen übrig, die nicht mit einme Semikolon enden, so kannst Du die nachfolgende Zeile mit dieser Zeile verbinden. Dann sehen die Rules so aus:
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: EchoKuche_NachsterTimer
previousState: UNDEF
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/javascript
script: >-
var zdt = Java.type('java.time.ZonedDateTime');
var duration = Java.type('java.time.Duration');
var localTime = Java.type('java.time.LocalTime');
var chronunit = Java.type('java.time.temporal.ChronoUnit');
var alarm = itemRegistry.getItem("EchoKuche_NachsterTimer").state;
var countdown = itemRegistry.getItem("EchoKuche_Countdown");
var coutndownMaxSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerMaxSekunden");
var coutndownSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerSekunden");
var jetzt = zdt.now().toLocalTime();
var alarmTime = alarm.getZonedDateTime().toLocalTime();
var diff = duration.between(jetzt, alarmTime);
var startime = localTime.of(0, 0, 0).plus(diff).truncatedTo(chronunit.SECONDS);
events.postUpdate(countdown, startime.toString());
events.postUpdate(coutndownMaxSekunden, diff.getSeconds());
events.postUpdate(coutndownSekunden, diff.getSeconds());
type: script.ScriptAction
- inputs: {}
id: "3"
configuration:
enable: true
ruleUIDs:
- 81f01c329e
type: core.RuleEnablementAction
configuration: {}
triggers:
- id: "1"
configuration:
itemName: EchoKuche_NachsterTimer
state: UNDEF
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
enable: false
ruleUIDs:
- 81f01c329e
type: core.RuleEnablementAction
- inputs: {}
id: "3"
configuration:
type: application/javascript
script: >-
var localTime = Java.type('java.time.LocalTime');
var countdown = itemRegistry.getItem("EchoKuche_Countdown");
var coutndownSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerSekunden");
var startime = localTime.of(0, 0, 0);
events.postUpdate(countdown, startime.toString());
events.postUpdate(coutndownSekunden, 0);
type: script.ScriptAction
configuration: {}
triggers:
- id: "1"
configuration:
cronExpression: "* * * * * ? *"
type: timer.GenericCronTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/javascript
script: >-
var zdt = Java.type('java.time.ZonedDateTime');
var duration = Java.type('java.time.Duration');
var localTime = Java.type('java.time.LocalTime');
var chronunit = Java.type('java.time.temporal.ChronoUnit');
var alarm = itemRegistry.getItem("EchoKuche_NachsterTimer").state;
var countdown = itemRegistry.getItem("EchoKuche_Countdown");
var coutndownSekunden = itemRegistry.getItem("EchoKuche_NachsterTimerSekunden");
var jetzt = zdt.now().toLocalTime();
var alarmTime = alarm.getZonedDateTime().toLocalTime();
var diff = duration.between(jetzt, alarmTime);
var startime = localTime.of(0, 0, 0).plus(diff).truncatedTo(chronunit.SECONDS);
events.postUpdate(countdown, startime.toString());
events.postUpdate(coutndownSekunden, diff.getSeconds());
type: script.ScriptAction
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 40
- Registriert: 9. Feb 2023 05:37
Re: Amazon Echo Timer unter OH4.0.2
Hallo,
Ja, JavaScript Scripting ist installiert,
Ich habe mal im Log nachgesehen und da kommt folgender Fehler:
2923-08-21 09:17:34.900 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID '4cf705d028' failed: org.graalvm.polyglot.PolyglotException: ReferenceError: "itemRegistry" is not defined
Ja, JavaScript Scripting ist installiert,
Ich habe mal im Log nachgesehen und da kommt folgender Fehler:
2923-08-21 09:17:34.900 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID '4cf705d028' failed: org.graalvm.polyglot.PolyglotException: ReferenceError: "itemRegistry" is not defined
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Amazon Echo Timer unter OH4.0.2
Ich fürchte, direkt helfen kann ich Dir nicht (eben weil ich keine JavaScript Scripte verwende...) aber ein Hinweis: unter OH3 war Nashorn im Einsatz und unter OH4 ist Nashorn lediglich noch als Option möglich. GraalVM ist ist die bevorzugte Version, wird aber anders programmiert, d.h. Du musst die Scripte anpassen (selbst wenn Du Nashorn installierst, musst Du die Scripte anpassen, weil die JavaScript Scripting Engine einen anderen Namen verwendet - allerdings sollte es in diesem Fall reichen, ein Script zu öffnen und neu zu speichern, openHAB sollte die Anpassung dann automatisch vornehmen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 40
- Registriert: 9. Feb 2023 05:37
Re: Amazon Echo Timer unter OH4.0.2
Ich hab es jetzt…
Ich habe JavaScript Scripting deinstalliert (weiß nicht ob es wirklich nötig war), Nashorn installiert und dann im Code der Rule den type: application/javascript
in
type: application/javascript;version=ECMAScript-5.1 geändert.
Ich habe JavaScript Scripting deinstalliert (weiß nicht ob es wirklich nötig war), Nashorn installiert und dann im Code der Rule den type: application/javascript
in
type: application/javascript;version=ECMAScript-5.1 geändert.