Seite 1 von 2

Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 10:38
von Caddy
Hallo,
vielleicht kann mal jemand drüber lesen und mir den Fehler sage :-)

ITEMs
Number SetBadTermostat "Thermostat Bad [%.1f °C]" <temperature> (gBad, gSetTempNacht) ...
Number SetToiTermostat "Thermostat Bad [%.1f °C]" <temperature> (gToi, gSetTempNacht) ...
Number SetWZTermostat "Thermostat Bad [%.1f °C]" <temperature> (gWZ, gSetTempNacht) ...
Number SetSZTermostat "Thermostat Bad [%.1f °C]" <temperature> (gSZ, gSetTempNacht) ...


Switch Sonoff04 "Stehlampe" <light> (gSetLicht)["Switchable"] ...
Switch Sonoff05 "kleine Lampe" <light> (gSetLicht)["Switchable"] ...

Switch item=gSetTempNacht mappings=[19="Nacht", 7="aus", 22="Tag"]


rule dazu
when
Item gSetTempNacht received command
then
logInfo("gSetTempNacht","Gruppentemperatur Nacht gesetzt!")
gSetTempNacht.members.forEach[ m |
m.sendCommand(receivedCommand)
logInfo("Rule.gSetTempNacht", "1 receivedCommand -> {}",receivedCommand)
logInfo("Rule.gSetTempNacht", "2 processing profile {}", m.name)
]
logInfo("Rule.gSetTempNacht","3 receivedCommand -> {}",receivedCommand)
if (receivedCommand == 19) {
gSetLicht.sendCommand(OFF)
}
end


Problem er durchläuft die forEach Schleife nur ein mal und das obwohl 4 Items drin sind ....

trage ich alle einzeln ein
xSetBadTermostat.sendCommand(receivedCommand)
usw ...

klappt es einwandfrei



Was mache ich falsch ?

Danke Caddy

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 10:48
von udo1toni
Wo ist Deine Gruppen Definition? gSetTempNacht muss als Group Item definiert sein (in diesem Fall natürlich als Typ Number).

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 10:50
von Caddy
hatte ich vergessen zu posten sorry hier

Group:Number gSetTempNacht "Temperatur gesamt setzen" <temperature> // Gruppen bzw Nachttemperatur setzen

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 11:07
von seppy
Hi,
Du brauchst eigentlich die Schleife nicht und kannst direkt an die Gruppe das Kommando senden.

Code: Alles auswählen

gSetTempNacht.sendCommand(receivedCommand)
Grüße,
Seppy

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 11:14
von Caddy
seppy hat geschrieben: 7. Jan 2019 11:07 Hi,
Du brauchst eigentlich die Schleife nicht und kannst direkt an die Gruppe das Kommando senden.

Code: Alles auswählen

gSetTempNacht.sendCommand(receivedCommand)
Grüße,
Seppy
Örgs ... das war nix ...

jetzt führt er die regel endlos aus weil er alle Thermostate anpackt ... also grundsätzlich hätte es geklappt.
Da aber jeder wechsel nun eine Änderung gibt führt er die Regel rekursiv vermutlich keine Ahnung einige mal aus

caddy

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 11:16
von Caddy
vermutlich muss ein if drumherum nur wenn noch nicht auf den gerade eingestellten wert gesetzt nur dann ... und dann sind wir wieder bei der schleife ?!

Oder liege ich da komplett falsch ?

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 11:23
von seppy
Dann brauchst Du die Regel gar nicht ...

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 11:40
von Caddy
seppy hat geschrieben: 7. Jan 2019 11:23 Dann brauchst Du die Regel gar nicht ...
Das verstehe ich jetzt nicht ?!

Ich will mit einem Schalter alle Thermostate auf eine Temperatur bringen.
Das geht nur mit einer Regel nach meinem Wissen

Caddy

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 11:50
von seppy
Hi,
da Du die Gruppe "gSetTempNacht" über den Switch

Code: Alles auswählen

Switch item=gSetTempNacht mappings=[19="Nacht", 7="aus", 22="Tag"]
eh schon schaltest, brauchst Du die ganze Regel nicht.

Was für Thermostate setzt Du ein?

Grüße,
Seppy

Re: Regel macht nicht das was sie soll ....

Verfasst: 7. Jan 2019 11:50
von limdul79
Wer löst den die Regel aus? Da die Regel auslöst nach der bedingung:

Code: Alles auswählen

Item gSetTempNacht received command
muss das Item ja bereits eine Temperatur erhalten haben - und die wird automatisch an alle Member verschickt. Sprich diese Regel die du geschrieben hast, wenn die auslöst ist es überflüssig - weil die genau dann auslöst, wenn deine individuellen Thermostate das Update sowieso erhalten.