Hallo Niko
Zitat von 2ndsky
Hier mal ein kleiner Statusbericht. Ich bin zwar glaub der einzige hier, der das Plugin wirklich einsetzt, ...
|
Nicht mehr :-)
|
Falls jemand von euch das Plugin verwendet, würde ich mich über einen kurzen Erfahrungsbericht freuen.
|
Da ich ein paar (zu unterschiedlichen Zeitpunkten in den letzten Jahren entstandene) Provisorien beseitigen und 'unter ein gemeinsames Dach' bringen möchte, beschäftige ich mich seit wenigen Tagen mit
SmartHome.py. Eines dieser Provisorien war ein von mir auf die Schnelle zusammen gehacktes C++-Progrämmchen, welches eine Abbildung RIO <->
KNX macht (ähnlich Makkis russconnectd für RNet <->
KNX).
Also habe ich dieser Tage
SmartHome.py installiert und mit Deinem russound-Plugin experimentiert und bin begeistert! Wie Du oben geschrieben hast: Einschalten der Zonen per
KNX-
PM oder
Taster, wie auch weitere Funktionen wie Mute, Lautstärkeänderungen, wechseln der Quelle, etc., funktionieren einwandfrei und ohne spürbaren Verzögerungen.
Vielen Dank also, für das tolle Plugin!
Welche Werte für das von Dir kürzlich eingeführte "relativevolume" zu verwenden sind, habe ich allerdings auf der Home-Page
SmartHome.py - Russound Plugin nicht beschrieben gefunden. Erst das Stichwort "Dimmer" weiter oben, haben mich auf die Spur geführt, wie "relativevolume" wohl anzuwenden (foo,
dpt 3) ist.
Leider sind meine
Taster anders belegt: Um die Lautstärke relativ um einen Schritt zu ändern, würde ich gerne ein
DPT 1 (bool) verwenden. Ich würde also gerne bei jedem
KNX-Telegramm mit Wert X ein RIO Kommando "KeyPress VolumeUp" und bei jedem Wert !X ein "KeyPress VolumeDown" verschicken.
Ob die Belegung (also die
KNX-Werte) nach
DPT 1.007 "DPT_Step" mit 0 = Decrease und 1 = Increase oder nach
DPT 1.008 "DPT_UpDown" mit 0 = Up und 1 = Down (leider genau gegensätzlich) erfolgt, wäre mir egal.
Natürlich könnte ich dies auch mit zwei Items pro Zone und ein wenig Logik hinbekommen:
Items:
Code:
['eg']
['az']
['audio']
[[[['knxrelativevolume']]]]
type = bool
enforce_updates = On
knx_dpt = 1
knx_listen = 10/1/22
[[[['riorelativevolume']]]]
type = foo
enforce_updates = On
rus_path = 1.1.relativevolume
logic.conf:
Code:
[RioVolRelAZ]
filename = rio_volrel_az.py
watch_item = eg.az.audio.knxrelativevolume
logics/rio_volrel_az.py:
Code:
#!/usr/bin/env python
if not sh.eg.az.audio.knxrelativevolume():
sh.eg.az.audio.riorelativevolume([1, 1])
if sh.eg.az.audio.knxrelativevolume():
sh.eg.az.audio.riorelativevolume([0, 1])
Daran gefällt mir aber nicht so recht, dass ich für die relative Lautstärke-Steuerung für 8 Zonen dann 2*8 Items, 8 Logic-Einträge und 8 Logic-Scripte benötige.
Hieltest Du es für sinnvoll/möglich, das Russound-Plugin so zu erweiteren, dass es ein neues Attribut (nennen wir es mal 'relativevolumebool') gibt, das direkt mit einem
KNX-DPT1 verküpft werden kann und bei
KNX Wert 1 "KeyPress VolumeUp" und bei jedem Wert 0 ein "KeyPress VolumeDown" verschickt (oder eben umgekehrt)?
Die Änderungen im Plugin-Source wären wohl eher gering, vielleicht etwa so:
Code:
diff --git a/plugins/russound/__init__.py b/plugins/russound/__init__.py
index 0fd16fb..ec490bc 100755
--- a/plugins/russound/__init__.py
+++ b/plugins/russound/__init__.py
@@ -74,7 +74,7 @@ class Russound(lib.my_asynchat.AsynChat):
logger.warning("No parameter specified for zone {0} on controller {1} in config of item {2}".format(z,c,item))
return None
- if param == 'relativevolume':
+ if param == 'relativevolume' or param == 'relativevolumebool':
item._enforce_updates = True
item.conf['rus_path'] = path
@@ -118,6 +118,8 @@ class Russound(lib.my_asynchat.AsynChat):
self.send_event(c, z, 'SelectSource', item())
elif cmd == 'mute':
self.send_event(c, z, 'KeyRelease', 'Mute')
+ elif cmd == 'relativevolumebool':
+ self.send_event(c, z, 'KeyPress', 'VolumeDown' if item() else 'VolumeUp')
elif cmd == 'relativevolume' and item()[1] != 0:
if item()[0] == 1:
self.send_event(c, z, 'KeyPress', 'VolumeUp')
Damit käme ich komplett ohne Einträge in logic.conf und logic/*.py-Scripte aus und könnte einfach pro Zone folgendes schreiben:
Code:
['eg']
[['az']]
[[['audio']]]
[[[['relativevolume']]]]
type = bool
enforce_updates = On
knx_dpt = 1
knx_listen = 10/1/22
rus_path = 1.1.relativevolumebool
Was meinst Du dazu?
|
Das steuern des internen Tuners steht noch auf meiner TODO Liste.
|
Hast Du in der Richtung schon etwas gemacht?
Wobei mich mehr als die Steuerung des Tuners der Empfang der Status-Nachrichten von den Quellen interessieren würde - insbesondere vom internen Tuner (also "WATCH S[1] ON'). Die anderen Quellen liefern bei mir sowieso nur die beiden Attribute "NAME" und "TYPE" (logisch, wenn an diesen Quellen nur Line-In Signale verwendet werden und nicht etwa andere Russound-Geräte).
Zugegebenermaßen habe ich in diese Richtung ein wenig in Deinem Plugin herumgebastelt und es funktioniert auch schon ganz ordentlich. Ich hadere allerdings noch ein wenig mit der Zeichencodierung der empfangenen Texte in "radioText" (und auch mit den Namen der Zonen). Ich sollte mich also wohl eher mal hinsetzen und mir ein wenig
Python-Grundlagenwissen aneignen, bevor ich hierzu vorzeigbaren Code produzieren kann...
Viele Grüße,
Alex