OpenHab Rule

openHAB - open Home Automation Bus

Moderator: Co-Administratoren

Antworten
ELV4Olli
Beiträge: 23
Registriert: 30.08.2017, 19:26

OpenHab Rule

Beitrag von ELV4Olli » 22.11.2017, 22:53

Hallo zusammen, ich bekomme leider meine Rule nicht hin.

was mache ich falsch ??? :
der merker macht das Problem:

Fehlermeldung des openHab:
[ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Test': An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.BooleanExtensions.operator_and(boolean,boolean) on instance: null

Meine Regel:

import org.openhab.core.library.types.*
import org.openhab.core.types.Command
import org.openhab.core.types.*
import org.openhab.core.items.GenericItem

var Number merkerTV = 0

rule "Test ON"
when
Item SteckdoseMitLeistungsmessung_2_Current changed
then
val SteckdoseMitLeistungsmessung_2_Current = (SteckdoseMitLeistungsmessung_2_Current.state as DecimalType).intValue
if ((SteckdoseMitLeistungsmessung_2_Current > 20) && (merkerTV = 0))
{
sendCommand(alexa_spielezimmer_licht, ON);
merkerTV = 1;
createTimer(now.plusSeconds(5)) [| sendCommand(alexa_spielezimmer_licht, OFF) ]
}
end

rule "Test OFF"
when
Item SteckdoseMitLeistungsmessung_2_Current changed
then
val SteckdoseMitLeistungsmessung_2_Current = (SteckdoseMitLeistungsmessung_2_Current.state as DecimalType).intValue
if ((SteckdoseMitLeistungsmessung_2_Current < 20) && (merkerTV = 1))
{
sendCommand(alexa_spielezimmer_licht, OFF);
merkerTV = 0
}
end



wenn jemand mir da weiter helfen könnte wäre ich echt froh.
ich habe nicht wirklich Ahnung vom Skripten ich kopiere mir die Sachen immer nur zusammen, dauert lange aber passt meistens
nur in diesen fall bin ich schon länger dran und nix passt
also wer kann mich retten ???

ELV4Olli
Beiträge: 23
Registriert: 30.08.2017, 19:26

Re: OpenHab Rule

Beitrag von ELV4Olli » 23.11.2017, 10:01

Jetzt habe ich es mal so Probiert:
aber auch hier nicht der gewünschte Erfolg

val Number OFF = 0
val Number ON = 1

rule "Test"
when
Item SteckdoseMitLeistungsmessung_2_Current changed
then
if (SteckdoseMitLeistungsmessung_2_Current.state > 20) TV_State.postUpdate(ON)
if (SteckdoseMitLeistungsmessung_2_Current.state < 20) TV_State.postUpdate(OFF)
end

rule "TV Ein"
when
Item TV_State changed from 0 to 1
then
sendCommand(alexa_spielezimmer_licht, ON);
createTimer(now.plusSeconds(5)) [| sendCommand(alexa_spielezimmer_licht, OFF) ]
end

rule "TV Aus"
when
Item TV_State changed from 1 to 0
then
sendCommand(alexa_spielezimmer_licht, OFF)
end



das Item TV_State ist angelegt und läuft auch ich bekomme im log eine 1 oder 0 wie ich es wollte!
aber leider schaltet da nix ???

Fehler vom openHab:
[ERROR] [.script.engine.ScriptExecutionThread] - Rule 'TV Aus': The argument 'command' must not be null or empty.

ich komme da leider ohne euch echt nicht weiter !!!

LG, der Olli

ELV4Olli
Beiträge: 23
Registriert: 30.08.2017, 19:26

Re: OpenHab Rule

Beitrag von ELV4Olli » 23.11.2017, 10:57

und mit der :
val Number OFF = 0
val Number ON = 1

rule "Test1"
when
Item SteckdoseMitLeistungsmessung_2_Current changed
then
if (SteckdoseMitLeistungsmessung_2_Current.state > 20) TV_State.postUpdate(ON)
if (SteckdoseMitLeistungsmessung_2_Current.state < 20) TV_State.postUpdate(OFF)
end

rule "Test2"
when
Item TV_State changed
then
if (TV_State=1) {
sendCommand(alexa_spielezimmer_licht, ON);
createTimer(now.plusSeconds(5)) [| sendCommand(alexa_spielezimmer_licht, OFF) ] Heating.sendCommand(ON)
}
if (TV_State=0) {
sendCommand(alexa_spielezimmer_licht, OFF);
}
end


Bekomme ich folgenden Fehler:
[ERROR] [.script.engine.ScriptExecutionThread] - Rule 'Test2': An error occurred during the script execution: Cannot assign a value in null context.

man man ich hätte mal was richtiges lernen sollen !!!
leider komme ich nicht klar damit ich mache mal ne pause und probiere es später weiter !!
vielleicht bekomme ich bis dahin auch einen Tip von euch ???

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: OpenHab Rule

Beitrag von ptweety » 23.11.2017, 11:05

Hi,

beschreibe doch erstmal was du machen willst und welche items du dafür verwendest.

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: OpenHab Rule

Beitrag von Dragonfly » 23.11.2017, 11:24

So pauschal helfen kann man da jetzt nicht wirklich, da man nicht weiß was z.B. TV_State ist.

Ist es vom Typ Switch? Dann so:

Code: Alles auswählen

rule "TV Aus"
when
Item TV_State changed from ON to OFF
then
alexa_spielezimmer_licht.sendCommand(OFF)
end
alexa_spielezimmer_licht.sendCommand(OFF) - das ist OH2
sendCommand(alexa_spielezimmer_licht, OFF) - das ist OH1 (geht auch unter OH2)

alexa_spielezimmer_licht - sollte auch vom Typ switch sein...

das solltest du nicht brauchen:

Code: Alles auswählen

val Number OFF = 0
val Number ON = 1
falls es das ist, was ich denke.

ELV4Olli
Beiträge: 23
Registriert: 30.08.2017, 19:26

Re: OpenHab Rule

Beitrag von ELV4Olli » 23.11.2017, 19:28

So, Danke erstmal für deine Unterstützung hat alles so geklappte wie ich es wollt.

mein Wunsch war wenn der Fernseher an ist soll das Ambilight reseted werden so das er auf Grabber steht.
beim Ausschalten auf eine Farbe nach Wahl mit Dimmung usw.

so hat es geklappt:

rule "Test1"
when
Item SteckdoseMitLeistungsmessung_2_Current changed
then
if (SteckdoseMitLeistungsmessung_2_Current.state > 20) TV_State.postUpdate(1)
if (SteckdoseMitLeistungsmessung_2_Current.state < 20) TV_State.postUpdate(0)
end

rule "TV Aus"
when
Item TV_State changed from 1 to 0
then
Ambilight_helligkeit.sendCommand(20);
Ambilight_Farbe.sendCommand("217,100,100")
end

rule "TV Ein"
when
Item TV_State changed from NULL to 1 or
Item TV_State changed from 0 to 1
then
Ambilight_helligkeit.sendCommand(100);
Ambilight_enabled.sendCommand(ON);
createTimer(now.plusSeconds(1)) [| sendCommand(Ambilight_enabled, OFF) ] Heating.sendCommand(ON);
end

TV_State wurde als Item so angelegt:

Number TV_State "TV State"

bin aber für jede Änderung oder Anregung offen
Danke noch mal

Benutzeravatar
eiGelbGeek
Beiträge: 979
Registriert: 24.07.2014, 17:46
Wohnort: Ruhrpottrandgebiet
Hat sich bedankt: 105 Mal
Danksagung erhalten: 19 Mal

Re: OpenHab Rule

Beitrag von eiGelbGeek » 03.12.2017, 19:04

ELV4Olli hat geschrieben:So, Danke erstmal für deine Unterstützung hat alles so geklappte wie ich es wollt.

mein Wunsch war wenn der Fernseher an ist soll das Ambilight reseted werden so das er auf Grabber steht.
beim Ausschalten auf eine Farbe nach Wahl mit Dimmung usw.

so hat es geklappt:

rule "Test1"
when
Item SteckdoseMitLeistungsmessung_2_Current changed
then
if (SteckdoseMitLeistungsmessung_2_Current.state > 20) TV_State.postUpdate(1)
if (SteckdoseMitLeistungsmessung_2_Current.state < 20) TV_State.postUpdate(0)
end

rule "TV Aus"
when
Item TV_State changed from 1 to 0
then
Ambilight_helligkeit.sendCommand(20);
Ambilight_Farbe.sendCommand("217,100,100")
end

rule "TV Ein"
when
Item TV_State changed from NULL to 1 or
Item TV_State changed from 0 to 1
then
Ambilight_helligkeit.sendCommand(100);
Ambilight_enabled.sendCommand(ON);
createTimer(now.plusSeconds(1)) [| sendCommand(Ambilight_enabled, OFF) ] Heating.sendCommand(ON);
end

TV_State wurde als Item so angelegt:

Number TV_State "TV State"

bin aber für jede Änderung oder Anregung offen
Danke noch mal

Nutze doch bitte Code Tags ... dann kann man das lesen ;-)

Code: Alles auswählen

rule "Test1"
	when
		Item SteckdoseMitLeistungsmessung_2_Current changed
	then
			if (SteckdoseMitLeistungsmessung_2_Current.state > 20) TV_State.postUpdate(1)
			if (SteckdoseMitLeistungsmessung_2_Current.state < 20) TV_State.postUpdate(0) 
	end
	
rule "TV Aus"
	when
		Item TV_State changed from 1 to 0
	then
		Ambilight_helligkeit.sendCommand(20);
		Ambilight_Farbe.sendCommand("217,100,100")
	end
	
rule "TV Ein"
	when		
		Item TV_State changed from NULL to 1 or
		Item TV_State changed from 0 to 1
	then
		Ambilight_helligkeit.sendCommand(100);
		Ambilight_enabled.sendCommand(ON);
		createTimer(now.plusSeconds(1)) [| sendCommand(Ambilight_enabled, OFF) ] Heating.sendCommand(ON);	
	end
Nur weil es nicht geht, muss es nicht kaputt sein ^^

Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire

Antworten

Zurück zu „openHAB“