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
Edit: hier ist eine noch bessere Lösung:
https://community.openhab.org/t/design- ... eper/36483
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 ?
Edit: hier ist eine noch bessere Lösung:
https://community.openhab.org/t/design- ... eper/36483
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 8-)

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
habe mir das mal angeschaut
Edit: hier ist eine noch bessere Lösung:
https://community.openhab.org/t/design- ... eper/36483
aber da verstehe ich nur Bahnhof :?:
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 :)