Seite 2 von 2
Re: mal wieder die Profis gefragt
Verfasst: 22. Dez 2021 19:35
von Snatsch
komme irgendwie mit der Beschreibung von deinem Link Gruppen Items zu erstellen nicht zurecht. habe es versucht aber es nicht hinbekommen. deshalb läuft es noch wie oben in der Rule. Ich weiß nicht ob es einen unterschied macht ob ich die Solltemperaturen in einem Gruppenitem anlege oder nicht.
Re: mal wieder die Profis gefragt
Verfasst: 22. Dez 2021 19:59
von sihui
Snatsch hat geschrieben: ↑22. Dez 2021 19:35
komme irgendwie mit der Beschreibung von deinem Link Gruppen Items zu erstellen nicht zurecht.
Es wird eine Gruppe "groundFloor" angelegt.
Darunter stehen zwei Items "kitchenLight" und "livingroomLight", denen wird über die Klammer dahinter die Gruppe "grondFloor" zugeordnet.
Wenn du jetzt diese Gruppe schaltest, schalten beide Items.
Re: mal wieder die Profis gefragt
Verfasst: 22. Dez 2021 21:04
von int5749
Evtl. verstehe ich dies falsch, aber wenn ich eine Befehl an die Gruppe sende, wird dann der Befehl automatisch an jedes Mitglied der Gruppe gesendet?
Und muss die Gruppe dann nicht entsprechend konfiguriert sein??
Bei meinem Beispiel wird die Gruppe ja "nur" als Sammelobjekt genutzt und dann über die Filterfunktion der Befehle jeweils einzeln gesendet.
Da könnte man natürlich über einen Timer noch ein "delay" einbauen, war bei mir aber bisher nicht nötig.
Es geht ja nicht ums schalten, sondern eine Nummer muss an jedes Mitglied der Gruppe gesendet werden.
Re: mal wieder die Profis gefragt
Verfasst: 22. Dez 2021 22:35
von Snatsch
habe mir das mal angeschaut
aber da verstehe ich nur Bahnhof

Re: mal wieder die Profis gefragt
Verfasst: 22. Dez 2021 22:37
von Snatsch
Aber ich habe es schon mal geschafft für die ganzen Solltemperaturen eine Gruppe anzulegen
benutzt du das selber und wenn ja könntest du mir es erklären ?
wäre echt super

Re: mal wieder die Profis gefragt
Verfasst: 23. Dez 2021 07:18
von sihui
Snatsch hat geschrieben: ↑22. Dez 2021 22:37
benutzt du das selber
Nein. Einfach abschreiben/kopieren und auf deine Items anpassen.
Re: mal wieder die Profis gefragt
Verfasst: 23. Dez 2021 16:39
von Snatsch
Habe jetzt mal die Rule von int5749 ausprobiert aber leider hab ich folgende Fehlermeldung
Code: Alles auswählen
2021-12-23 16:30:09.247 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Alle_Heizungen_schalten-1' failed: 'members' is not a member of 'java.lang.Integer'; line 9, column 5, length 16 in Alle_Heizungen_schalten
und hier mein angepasster Code dazu
Code: Alles auswählen
rule "Heizungsschalter für alle Heizungen"
when
Item Heizungsschalter_Alle_Heizungen received command
then
var Integer Solltemp = 6 //default
if(receivedCommand == ON) {
Solltemp = 21
}
Solltemp.members.filter(f|(f.state as DecimalType).intValue!==Solltemp.state as DecimalType).forEach[ h|
s.sendCommand(Solltemp.state as DecimalType)
logInfo("Heizung", h.name.split("_").get(1) + " Solltemperaur 21 Grad")
]
end
Re: mal wieder die Profis gefragt
Verfasst: 23. Dez 2021 20:43
von int5749
Snatsch hat geschrieben: ↑23. Dez 2021 16:39
und hier mein angepasster Code dazu
Wie heißt denn die Gruppe??
Snatsch hat geschrieben: ↑23. Dez 2021 16:39
var Integer
Solltemp = 6 //default
if(receivedCommand == ON) {
Solltemp = 21
}
Solltemp.members.filter(f|(f.state as DecimalType).intValue!==Solltemp.state as DecimalType).forEach[ h|
Du versuchst die Variable Solltemp zu filtern, dies geht natürlich nicht. Da muss der Gruppenname stehen, der sicher anders lautet?
Dies war zumindes bei meinem Vorschlag der Fall
Viele Grüße
Re: mal wieder die Profis gefragt
Verfasst: 23. Dez 2021 21:54
von Snatsch
oh Sch..... mhhh dann kann es ja auch nicht funktionieren

Vielen Dank

Re: mal wieder die Profis gefragt
Verfasst: 24. Dez 2021 15:27
von Snatsch
da ich mit dieser Lösung überhaubt nicht zurecht komme habe ich meine alte Rule wieder genommen und habe zwischen jeden Befehl einen Timmer eingebaut

Ich hatte es erst mit einen kürzeren versucht aber da kamen die Befehle auch nicht alle an.
Code: Alles auswählen
var Timer tLucaHeizung = null
var Timer tNellyHeizung = null
var Timer tSchlafzimmerHeizung = null
var Timer tBadezimmerHeizung = null
var Timer tUnteresbadetimmerHeizung = null
var Timer tPartyraumHeizung = null
var Timer tTreppenhausHeizung = null
rule "Heizungsschalter für alle Heizungen"
when
Item Heizungsschalter_Alle_Heizungen received command
then
if(receivedCommand == ON) {
tLucaHeizung = createTimer(now.plusSeconds(10), [|
HeizungLucaZimmer_Solltemperatur.sendCommand(21)
HeizungLucaZimmer_Solltemperatur_Fensterkontakt.sendCommand(21)
])
tNellyHeizung = createTimer(now.plusSeconds(20), [|
HeizungNellyZimmer_Solltemperatur.sendCommand(21)
HeizungNellyZimmer_Solltemperatur_Fensterkontakt.sendCommand(21)
])
tSchlafzimmerHeizung = createTimer(now.plusSeconds(30), [|
HeizungSchlafzimmer_Solltemperatur.sendCommand(21)
HeizungSchlafzimmer_Solltemperatur_Fensterkontakt.sendCommand(21)
])
tBadezimmerHeizung = createTimer(now.plusSeconds(40), [|
HeizungBadezimmer_Solltemperatur.sendCommand(21)
HeizungBadezimmer_Solltemperatur_Fensterkontakt.sendCommand(21)
])
tUnteresbadetimmerHeizung = createTimer(now.plusSeconds(50), [|
HeizungUnteresBadezimmer_Solltemperatur.sendCommand(21)
])
tPartyraumHeizung = createTimer(now.plusSeconds(60), [|
HeizungPartyraum_Solltemperatur.sendCommand(21)
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(21)
])
tTreppenhausHeizung = createTimer(now.plusSeconds(70), [|
HeizungTreppenhaus_Solltemperatur.sendCommand(21)
HeizungTreppenhaus_Solltemperatur_Fensterkontakt.sendCommand(21)
])
} else {
tLucaHeizung = createTimer(now.plusSeconds(10), [|
HeizungLucaZimmer_Solltemperatur.sendCommand(6)
HeizungLucaZimmer_Solltemperatur_Fensterkontakt.sendCommand(6)
])
tNellyHeizung = createTimer(now.plusSeconds(20), [|
HeizungNellyZimmer_Solltemperatur.sendCommand(6)
HeizungNellyZimmer_Solltemperatur_Fensterkontakt.sendCommand(6)
])
tSchlafzimmerHeizung = createTimer(now.plusSeconds(30), [|
HeizungSchlafzimmer_Solltemperatur.sendCommand(6)
HeizungSchlafzimmer_Solltemperatur_Fensterkontakt.sendCommand(6)
])
tBadezimmerHeizung = createTimer(now.plusSeconds(40), [|
HeizungBadezimmer_Solltemperatur.sendCommand(6)
HeizungBadezimmer_Solltemperatur_Fensterkontakt.sendCommand(6)
])
tUnteresbadetimmerHeizung = createTimer(now.plusSeconds(50), [|
HeizungUnteresBadezimmer_Solltemperatur.sendCommand(6)
])
tPartyraumHeizung = createTimer(now.plusSeconds(60), [|
HeizungPartyraum_Solltemperatur.sendCommand(6)
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(6)
])
tTreppenhausHeizung = createTimer(now.plusSeconds(70), [|
HeizungTreppenhaus_Solltemperatur.sendCommand(6)
HeizungTreppenhaus_Solltemperatur_Fensterkontakt.sendCommand(6)
])
}
end
ich weiß nicht ob das irgendwelche Nachteile hat es so zu machen, aber jedenfalls machen jetzt so alle Heizungen das was sie sollen
