This expression is not allowed...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
domjo75
Beiträge: 159
Registriert: 22. Jan 2019 11:10
Answers: 0

This expression is not allowed...

Beitrag von domjo75 »

Guten Morgen,

ich habe heute morgen meinen Alexa Family Report angepasst, weil mir Geburtstage angesagt wurden, die noch weit in der Zukunft liegen.

Kurz zum Aufbau.
Ich baue mir über Ephemeris die Termine zusammen und nutze sie dann in der Rule

Code: Alles auswählen

val long untBirth = Ephemeris.getDaysUntil(nextBirth, '/etc/openhab/services/anniversaries.xml')
Anschliessen bastel ich mir den Text zusammen den die Alexa uns vorbetet. Das klappt soweit auch ganz prima.

Code: Alles auswählen

	aText += "<amazon:effect name='whispered'>"
	if (untBirth >= 2) {aText += "Übrigens, in " + untBirth + " Tagen ist " + nextBirth "."}
	if (untBirth == 1) {aText += "Übrigens, morgen ist " + nextBirth "."}
	if (untBirth == 0) {aText += "Heute ist " + nextBirth ". Juhuuuuu"}
	aText += "</amazon:effect>"
Allerdings ist unser nächster Geburtstag erst in 165 Tagen. Das möchten wir noch nicht hören. Daher habe ich die Passage wie folgt erweitert.

Code: Alles auswählen

	if (untBirth <= 30) {
		aText += "<amazon:effect name='whispered'>"
		if (untBirth >= 2) {aText += "Übrigens, in " + untBirth + " Tagen ist " + nextBirth "."}
		if (untBirth == 1) {aText += "Übrigens, morgen ist " + nextBirth "."}
		if (untBirth == 0) {aText += "Heute ist " + nextBirth ". Juhuuuuu"}
		aText += "</amazon:effect>"
	}
daraufhin bekomme ich diese INFO im Log.

Code: Alles auswählen

2021-04-12 08:46:03.213 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'AlexaFamilyReport.rules', using it anyway:

This expression is not allowed in this context, since it doesn't cause any side effects.
Oben drüber schreibt er mir im LOG diese INFO. Hier sieht es so aus, als ob

Code: Alles auswählen

if (untBirth <= 30)
komplett leer ist.

Code: Alles auswählen

	if 

	aText += "<amazon:effect name='whispered'>"

	if (untBirth >= 2) {aText += "Übrigens, in " + untBirth + " Tagen ist " + nextBirth "."}

	if (untBirth == 1) {aText += "Übrigens, morgen ist " + nextBirth "."}

	if (untBirth == 0) {aText += "Heute ist " + nextBirth ". Juhuuuuu"}

	aText += "</amazon:effect>"
Bestimmt kann man meinen Code schöner gestalten. Grundsätzlich müsste das doch aber funktionieren ?!

Beste Grüße

Benutzeravatar
udo1toni
Beiträge: 15271
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: This expression is not allowed...

Beitrag von udo1toni »

Das ist ja nur ein Teil der Rule, die Fehlermeldung kann sich auch auf einen anderen Teil der Rule beziehen (das wäre dann ein Seiteneffekt, der nur durch die Codeänderung zum Tragen kommt). Eventuell könntest Du die Bedingung so definieren:

Code: Alles auswählen

	aText += "<amazon:effect name='whispered'>"
	if (untBirth > 1 && untBirth < 31) {aText += "Übrigens, in " + untBirth + " Tagen ist " + nextBirth "."}
	if (untBirth == 1) {aText += "Übrigens, morgen ist " + nextBirth "."}
	if (untBirth == 0) {aText += "Heute ist " + nextBirth ". Juhuuuuu"}
	aText += "</amazon:effect>"
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten