Seite 1 von 1
Thermostate ausgeben die nicht im Automatikmodus laufen
Verfasst: 8. Jan 2016 11:10
von toto1975
Hallo in die Runde,
ich habe ein Problem mit einer Regel die ich benötige um einen Item die Thermostate mitzuteilen die nicht im Automatikmodus laufen.
Code: Alles auswählen
import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.joda.time.*
var String myString=""
rule "autoliste"
when
Item Heiz_Auto changed
then
logInfo("FILE", "Rule 'autoliste' started") //Anzeige im Log
myString=""
Heiz_Auto.filter(s | s.state == off).forEach(th | myString = myString + th.name + ", ")
auto.postUpdate(myString.left(myString.length()-2))
logInfo("FILE", "Rule 'autoliste' completed") //Anzeige im Log
end
Als Fehler bekomme ich in der Anzeige
Code: Alles auswählen
Error during the execution of rule 'autoliste': The name '<XMemberFeatureCallImplCustom>.membrers' cannot be resolved to an item or type.
Leider finde ich den Fehler nicht. Hat hier jemand einen Tipp?
Viele Grüße
Torsten
Re: Thermostate ausgeben die nicht im Automatikmodus laufen
Verfasst: 8. Jan 2016 11:18
von seppy
Hi toto1975,
was ist den
"auto"
? Und was genau möchtest Du damit erreichen? Willst Du die entsprechenden Items im Automode anzeigen?
Ich gehe davon aus, das Heiz_Auto eine Gruppe ist, oder? MIt ein paar mehr Infos können wir Dir evtl helfen.
Grüße,
Seppy
Re: Thermostate ausgeben die nicht im Automatikmodus laufen
Verfasst: 8. Jan 2016 11:41
von toto1975
Hallo Seppy,
vielen Dank für die schnelle Antwort.
"auto" ist ein String Item was als Inhalt die Variable MyString enthalten soll. Dort sollen alle Thermostate aufgelistet werden die nicht im Automodus laufen, also Switch = Off.
Die Items sehen so aus:
Switch Heiz_Auto_Wohnzimmer
"Wohnzimmer"
(Heiz_Auto)
Switch Heiz_Auto_Kinderzimmer
"Kinderzimmer"
(Heiz_Auto)
usw.
Heiz_Auto ist also eine Gruppe wo alle Thermostate enthalten sind.
Sorry, ich sollte vielleicht meine Items und Variablen etwas aussagekräftiger benennen
Habe ich noch was vergessen?
Re: Thermostate ausgeben die nicht im Automatikmodus laufen
Verfasst: 8. Jan 2016 11:50
von seppy
Hmm also was auf den ersten Blick seltsam aussieht ist Deine Schleife. Members fehlt meiner Meinung nach auf jeden Fall:
Code: Alles auswählen
rule "autoliste"
when
Item Heiz_Auto changed
then
logInfo("FILE", "Rule 'autoliste' started") //Anzeige im Log
myString=""
Heiz_Auto.members.filter(s | s.state == off).forEach(th | myString = myString + th.name + ", ")
auto.postUpdate(myString.left(myString.length()-2))
logInfo("FILE", "Rule 'autoliste' completed") //Anzeige im Log
end
Versuch mal so, wenn das auch Probleme macht. Würde ich erstmal die Schleife ohne Filter bauen und dann im zweiten Schritt nach der Einschränkung schauen. Also
Code: Alles auswählen
Heiz_Auto.members.forEach(th | myString = myString + th.name + ", ")
auto.postUpdate(myString.left(myString.length()-2))
logInfo("FILE", "Rule 'autoliste' completed") //Anzeige im Log
Ich würde auch in der Schleife nur den String bauen und im Anschluss nur ein Update fahren. Teste erstmal den ersten Punkt und melde Dich doch nochmal!
Grüße,
Seppy
Re: Thermostate ausgeben die nicht im Automatikmodus laufen
Verfasst: 9. Jan 2016 11:28
von toto1975
seppy hat geschrieben:Members fehlt meiner Meinung nach auf jeden Fall:
Code: Alles auswählen
rule "autoliste"
when
Item Heiz_Auto changed
then
logInfo("FILE", "Rule 'autoliste' started") //Anzeige im Log
myString=""
Heiz_Auto.members.filter(s | s.state == off).forEach(th | myString = myString + th.name + ", ")
auto.postUpdate(myString.left(myString.length()-2))
logInfo("FILE", "Rule 'autoliste' completed") //Anzeige im Log
end
Das ist die Lösung, vielen Dank für die Hilfe
Viele Grüße
Torsten
Re: Thermostate ausgeben die nicht im Automatikmodus laufen
Verfasst: 9. Jan 2016 16:48
von seppy
Gerne
Sent from my iPhone using Tapatalk