henfri Könntest du deine finale HSV Logik hier noch posten, damit alles beisammen ist? Vielen Dank!
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sequenzer für Farbbeleuchtung
Einklappen
X
-
Hallo,
na klar!
Code:#!/usr/bin/env python3 #my_sequencer=sh.eg.Wohnzimmer.Voute my_sequencer=sh.return_item(logic.my_sequencer) logger.info("[Sequencer] Starting for {0}. Status is {1}".format(my_sequencer, my_sequencer.sequencer())) if my_sequencer.sequencer(): def hsv2rgb(h,s,v): try: import colorsys as cs except: logger.error("could not import colorsys") return tuple(round(i * 100) for i in cs.hsv_to_rgb(h,s,v)) h=my_sequencer.sequencer.h() s=my_sequencer.sequencer.s()/100.0 v=my_sequencer.sequencer.v()/100.0 logger.info('[HSV] h={0}, s={1}, v={2}'.format(h,s,v)) r,g,b=hsv2rgb(h,s,v) logger.info('[HSV] r={0}, g={1}, b={2}'.format(r,g,b)) my_sequencer.R.Dimmwert(r) my_sequencer.G.Dimmwert(g) my_sequencer.B.Dimmwert(b) if h>1: h=0 my_sequencer.sequencer.h(h+0.05) else: if trigger['source'] is not None: if logic.my_sequencer in trigger['source']: logger.info("[Sequencer] HSV Switching off now") my_sequencer.R.Dimmwert(0) my_sequencer.G.Dimmwert(0) my_sequencer.B.Dimmwert(0)
Code:Voute: sequencer: knx_dpt: 1 knx_cache: 10/3/1 visu_acl: rw type: bool h: visu_acl: rw type: num cache: 'True' s: visu_acl: rw type: num cache: 'True' v: visu_acl: rw type: num cache: 'True' B: type: bool knx_cache: 1/1/174 knx_send: 1/1/173 knx_dpt: 1 Dimmwert: type: num knx_cache: 1/1/176 knx_send: 1/1/175 knx_dpt: '5.001' G: type: bool knx_cache: 1/1/170 knx_send: 1/1/169 knx_dpt: 1 Dimmwert: type: num knx_cache: 1/1/172 knx_send: 1/1/171 knx_dpt: '5.001' R: type: bool knx_cache: 1/1/166 knx_send: 1/1/165 knx_dpt: 1 Dimmwert: type: num knx_cache: 1/1/168 knx_send: 1/1/167 knx_dpt: '5.001'
Gruß,
Hendrik
- 1 Likes
Kommentar
-
Okay, und die Logik wird durch einen Cycle alle x Sekunden aufgerufen und das sanfte Hin- und Herblenden macht der Aktor, ja?
Unklar ist mir die erste Zeile
my_sequencer=sh.return_item(logic.my_sequencer)
Was genau soll hier passieren? logic.mysequencer gibt's ja nicht? Soll das nicht eher items.return_item(trigger['source']).return_parent() heißen?
Oder
Code:if not hasattr(logic, 'my_sequencer'): logic.my_sequencer = items.return_item(trigger['source']).return_parent() my_sequencer=logic.my_sequencer
Zuletzt geändert von Onkelandy; 30.11.2020, 21:41.
Kommentar
-
Zitat von Onkelandy Beitrag anzeigenOkay, und die Logik wird durch einen Cycle alle x Sekunden aufgerufen und das sanfte Hin- und Herblenden macht der Aktor, ja?
Unklar ist mir die erste Zeile
my_sequencer=sh.return_item(logic.my_sequencer)
Was genau soll hier passieren? logic.mysequencer gibt's ja nicht? Soll das nicht eher items.return_item(trigger['source']).return_parent() heißen?
Sorry, die hätte ich gleich posten sollen.
Ich fänd übrigens gut, wenn wir solche Logiken im github sammeln und kollektiv verbessern würden:
- Item Struct
- logic.yaml
- logic.py
Dafür muss man natürlich allgemeiner arbeiten als wenn man nur für sich eine Logik schreibt. Aber das klappt ja beim HS und Edomi auch.
Oder
Code:if not hasattr(logic, 'my_sequencer'): logic.my_sequencer = items.return_item(trigger['source']).return_parent() my_sequencer=logic.my_sequencer
Code:Ja, das sollte klappen... Wobei ich gerade nicht mehr sicher bin, warum ich ein watch_item habe... Braucht man das überhaupt, wenn eh zyklisch aufgerufen wird? Und was ist trigger['source'] beim zyklischem Aufruf?
Kannst du vielleicht auch den logic.yaml Abschnitt posten? Danke!
Code:hsv: filename: hsv.py cycle: 10 my_sequencer: eg.Wohnzimmer.Voute watch_item: eg.Wohnzimmer.Voute.sequencer
Hendrik
Kommentar
-
Okay, klar, das ist ein etwas anderer Ansatz. Aber du hast Recht, bei Cycle macht das mit dem Trigger Source wohl tatsächlich wenig Sinn, das ist dann nämlich None.
Im Prinzip gehört das Ganze hier rein, oder? https://www.smarthomeng.de/user/beis...ache-beispiele
Kommentar
-
Wäre schon auch eine Option. Ich glaube henfri meinte aber eher eine "lose Sammlung" zB auf github wie es sie zB für die smartvisu gibt. https://github.com/smartVISU-newstuff/widgets
Da könnte man dann gemeinsam drüberbügeln. In letzter Konsequenz wäre es vielleicht auch eine Überlegung wert, die besten/häufigsten genutzten Logiken im Admininterface in einem Tab "Beispiellogiken" hier http://10.0.0.152:8383/admin/logics bereitzustellen. Mit nem + zum Live-Laden der Logik...?
Kommentar
-
Hallo,
ja, ein Blog Artikel ist halt eine recht hohe Hürde. Das macht dann doch wieder nur 1/10 aller, die etwas zu teilen hätten.
Eine Logik kann ich in meinem Github bereitstellen und zwar in 10^-6s. Für einen Blog-Artikel brauche ich ne Stunde.
Daher würde ich stark zu einer Lösung wie von Andy tendieren.
Gruß,
Hendrik
Kommentar
-
Dann muss sich nur jemand zum moderieren finden. Wir werden kein Wiki mit allgemeinen Schreibrechten aufsetzen, dass enthält dann nach kurzer Zeit nur noch Spam.
Auf der Blog Website schaffen es Spammer sogar von Zeit zu Zeit durch das Google Captcha durchzukommen...
Der einfachste Weg wäre hier einen Thread dafür aufzumachen. Dann kümmern sich andere um die Spam Thematik (vielen Dank an die Forum Admins). Die besten Beispiele könnte man dann immer noch in ein Wiki oder in einen Blog Artikel überführen. Die wären dann auch qualitätsgesichert und funktionieren auch wirklich.Zuletzt geändert von Msinn; 06.12.2020, 18:06.Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Kommentar
-
Hallo,
das verstehe ich. Aber in einem Thread gibt es keine Übersicht. Das bringt doch nicht, wenn wir dann den nächsten 40 Seiten Thread haben, in dem von der gleichen Logik 4 Varianten zu finden sind, wobei die Variante 3 den Vorteil A udn die Variante 2 das Feature X hat.
Warum nicht einfach Beispiel-Logiken im github und PRs annehmen?
Gruß,
Hendrik
- 1 Likes
Kommentar
Kommentar