Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
eval = if sh.og.licht.schlafzimmer.decke.dimmen()>0: value=1 else value=0
Bei der Syntax bin ich jetzt nicht ganz sicher ......
Scheint so, als ob der Syntax wirklich nicht ganz korrekt ist.
Hab schon einiges probiert, finde aber nicht die richtige Lösung.
Könnte mir da jemand weiterhelfen?
Danke
[og]
[[licht]]
[[[schlafzimmer]]]
[[[[decke]]]]
type = bool
knx_dpt = 1
knx_send = 3/1/1
eval = if sh.og.licht.schlafzimmer.decke.dimmen()>0: value=1 else value=0
eval_trigger= og.licht.schlafzimmer.decke.dimmen
[[[[[dimmen]]]]]
type = num
knx_dpt = 5
knx_send = 3/1/3
knx_cache = 3/1/4
Bei der Syntax bin ich jetzt nicht ganz sicher, aber das Prinzip müsste funktionieren.
Wichtig ist, dass du beim bool nicht vom knx liest sondern ein eval vom dimm-item machst.
Mit der Logik und Dummy-GAs läuft es nun.
Da meine Items in den Räumen die selbe Struktur aufweisen reicht mir auch ein einfacher Trigger mit Wildcard zum auslösen.
Code:
#!/usr/bin/env python
# ermittelt zu dem auslösendem item, das elternelement
# und schreibt den wert 0 od. 1 in die dort konfigurierte listen gruppenadresse
triggerItem = sh.return_item(trigger['source']);
if triggerItem() > 0:
sh.KNX.groupwrite(triggerItem.return_parent().conf['knx_listen'], 1, '1')
elif triggerItem() == 0:
sh.KNX.groupwrite(triggerItem.return_parent().conf['knx_listen'], 0, '1')
Das DALI Gateway hat 1 Bool GA zum Ein- /Ausschalten, aber keine GA um den Status zu lesen.
Daneben hat es 2 Num (DPT 5) GAs. Eine zum Setzen des Dimmwerts und eine zum lesen des Dimmwerts.
Sende ich eine 1 auf die erste GA so Schaltet sich das Licht auf einen im Gateway parametrierten Wert ein (z.B 90%).
Für die Visu würde ich gerne das Dimmer Widget verwenden. Der Slider funktioniert einwandfrei, weil das definierte Item (og.licht.schlafzimmer.decke.dimmen) vollständig ist. Der Schalter "funktioniert", zeigt aber beim verwenden des Sliders nicht "Ein" an, weil es keinen E/A Status GA gibt.
Daher war meine Idee aus der DPT-5 GA per Logik / Eval einen "bool"-Status zu ermitteln.
Nach ein wenig mehr basteln habe ich glaube ich eine Lösung gefunden:
Ich setze über eine Logik mit "sh.KNX.groupwrite" eine "virtuelle Gruppenadresse" vom DPT 1 auf den gewünschten Wert (0 bei 0, 1 bei > 0) und in der Item.Conf hat das "Schalt"-Item nun halt "knx_listen = <virtuelle Adresse>"
Hat zwar den Nachteil das die GA u.U. beim Starten von SmartHome nicht synchron mit dem Ist-Zustand sein kann, weil die Wert-GA nicht neu evaluiert wird (oder geht knx_init?).
Außerdem muss ich für jeden Raum im OG der mit dem DALI-Gateway betrieben wird die Logik verwenden.
Hat niemand eine Idee?
Bei den ganzen Themen im Forum klingt mein "Problem" gradezu trivial. :-)
Ich habe das Gateway mal für einen Kanal umparametriert um den Status Ein-/Aus zu bekommen, aber wie vermutet geht mir der Dimmen-Status verloren.
Ich habe auch schon mal an knx_reply oder so gedacht, aber ich komme leider zu keinem guten Ergebnis.
Ich habe schon dran gedacht das man evtl. ne Logik schreiben muss, hier fehlt mir aber der zündende Gedanke was eigentlich genau passieren muss / soll um aus meinen 3 GAs (Schalten 0/1, Wert schreiben, Wert Status) einen Dimmer mit einem Bool und einem Num Item zu basteln.
Alternativ bleibt halt statt "device.dimmer" n "basic.slider", dann wäre das Schalten aber weniger komfortabel.
das eine Thema hab ich gelöst bekommen, jetzt hab ich direkt wieder was.
Ich habe im gesamten OG Einbaustrahler verbaut, diese werden via DALI angesteuert und sind mit dem IPAS DALI Gateway ans KNX angeschlossen.
Leider liefert das Gateway den aktuellen Status immer als %-Wert zurück ODER als 0/1 Wert. Aktuell ist das Gateway auf %-Werte parametriert.
Meine Items dazu sehen folgendermaßen aus:
Code:
[og]
[[licht]]
[[[schlafzimmer]]]
[[[[decke]]]]
type = bool
knx_dpt = 1
knx_send = 3/1/1
knx_cache = 3/1/4
[[[[[dimmen]]]]]
type = num
knx_dpt = 5
knx_send = 3/1/3
knx_cache = 3/1/4
Jetzt bekomm ich logischerweise im SmartHome-Log die Info das ein Wert "140" nicht kompatibel zu bool ist.
Füge ich die Zeile:
Code:
eval = value if value == 0 else 1
hinzu klappt es ohne Fehlermeldung, aber dafür funktioniert dann das SmartVisu Widget "dimmer" nicht mehr vollständig.
Es wird mir beim betätigen des Sliders das "Ein / Aus" Symbol korrekt aktualisiert, aber ich kann nicht mehr direkt "Ein" / "Aus" mittels Klick auf das Icon senden.
Lasse ich das eval weg, so funktioniert das Klicken auf "Ein / Aus", aber bei Betätigung des Sliders aktualisiert sich der Zustand nicht mehr, was auch logisch ist da 140 erst einmal kein "bool" ist.
Wenn ich das Gateway umparametriere geht mir die %-Wert Info verloren und das Dimmer-Widget ist irgendwie dahin, daher meine Frage wie ich dieses "Problem" am geschicktesten löse?
Dimmer kann nur 2 Items entgegen nehmen, "Schalten" und "Dimmen", also müsste doch die Wert-Konvertierung irgendwie auf SmartHome.py Seite passieren, ohne aber die Funktionalität zu beeinträchtigen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: