Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik für Netzteil einer Jalousie

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Logik für Netzteil einer Jalousie

    Hallo Allen,

    Ich hab hier ein Problem wo ich nicht so richtig weiter komme. Hab Smarthome und Smartvisu am laufen.

    Nun hab ich noch die alten Velux Dachfenster Jalousien mit 24V. Ich hab im Schaltkasten ein Netzteil (NT) welches das liefert und leider immer läuft.
    Ich hab das NT nun auch einen Aktor gelegt und versuche es so anzusteuern, dass es bei jedem Klick auf die Tasten für hoch und runter bei den Dachfenster angeht und nach 5 min wieder ausgeht.

    Das "Ausgehen" ist schon mal klar. (via Autotimer)
    Beispiel:
    Code:
    [[[Flur_unten]]]
                    type = bool
                    knx_dpt = 1
                    knx_send = 1/0/1
                    knx_listen = 1/0/1
                    knx_init = 1/0/1
                    visu_acl = rw
                    [B]type = num
                    autotimer = 3m = 0[/B]
    Aber wie bekomme ich das hin das: wenn 1/1/19 (lamellenverstl.) oder 1/1/20 (auf-ab) gedrückt wird 1/0/26 (NT) an geht (auf 1 gesetzt wird)? Via Applikation geht das nicht. Also muss das als Logik gemacht werden.

    Wie kann so was aussehen?
    Jemand eine Idee?

    Danke Gruß Haxley

    #2
    Bin schon mal einen Schritt weiter:
    Code:
    [[Netzteil]]
                name = Netzteil
                sv_widget =   Netzteil  {{ basic.flip('item.Netzteil', 'item.Netzteil') }} 
                [[[Netzteil]]]
                    type = bool
                    knx_dpt = 1
                    knx_send = 1/0/26
                    knx_listen = 1/0/26
                    knx_init = 1/0/26
                    visu_acl = rw
                    type = num
                    autotimer = 3m = 0
                [[Dachfenster]]
                name = Dachfenster    
                    sv_widget =     Dachfenster Bad {{ device.shutter ('og.Dachfenster', 'Bad', 'og.Dachfenster.move', 'og.Dachfenster.stop', 'og.Dachfenster.pos','', '') }} 
                [[[move]]]
                    type = num
                    enforce_updates = on
                    visu_acl = rw
                    knx_dpt = 1
                    knx_send = 1/1/20
                    knx_send = 1/0/26
                [[[stop]]]
                    type = num
                    visu_acl = rw
                    enforce_updates = on
                    knx_dpt = 1
                    knx_send = 1/1/19
                [[[pos]]]
                    type = num
                    visu_acl = rw
                    enforce_updates = on
                    knx_dpt = 5
                    knx_send = 1/1/19
                    knx_cache = 1/1/20
    Das Netzteil geht beim "Runterfahren" der Jalousie mit an und nach 3 min auch wieder aus. Leider schaltet das Netzteil (1/0/26) beim "Hochfahren" nicht. Was mache ich falsch?
    Danke schon mal.

    Kommentar


      #3
      Vielleicht weil Runter "1" und Hoch "0" ist?
      Gruß Matthias
      EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
      - PN nur für PERSÖNLICHES!

      Kommentar


        #4
        Zitat von MatthiasS Beitrag anzeigen
        Vielleicht weil Runter "1" und Hoch "0" ist?
        Ja macht Sinn.
        Aber wie mache ich das, dass auch bei Hoch eine 1 an 1/0/26 gesendet wird?

        Kommentar


          #5
          Hallo,
          schau Dir doch vielleicht mal (in der Doku) eval und eval_trigger an.

          z.B. beim item [[[Netzteil]]]:

          eval = 1 # setzt den Wert immer auf 1, was Du bei [[[Netzteil]]] ja so willst
          eval_trigger = ???.Netzteil.move | ???.Netzteil.pos
          # hört auf Änderungen dieser items und triggert dann eval (die ??? natürlich ersetzen)


          schreibe ich grad so aus dem Kopf, aber die Richtung sollte damit deutlich werden :-)

          Viele Grüße - Carsten

          Kommentar


            #6
            Danke für den Anreiz aber das funktioniert leider nicht. Schon daher da ein autotimer wieder auf 0 setzt aber eval immer 1 will. Das wird eine Endlosschleife.

            Ich versuche das gerade über eine Logik zu machen, allerdings ist das meine erste Logik.
            Ich hab das so:
            items:
            Code:
            [[netzteil24v]]
                        name = netzteil24v
                        sv_widget =   netzteil24v  {{ basic.flip('item.netzteil24v', 'item.netzteil24v') }} 
                        [[[netzteil24v]]]
                            type = bool
                            knx_dpt = 1
                            knx_send = 1/0/26
                            knx_listen = 1/0/26
                            knx_init = 1/0/26
                            visu_acl = rw
                            
            
                            autotimer = 1m = 0
                            
                [[Dachfenster]]
                        name = Dachfenster    
                            sv_widget =     Dachfenster Bad {{ device.shutter ('og.Dachfenster', 'Bad', 'og.Dachfenster.move', 'og.Dachfenster.stop', 'og.Dachfenster.pos','', '') }} 
                        [[[move]]]
                            type = num
                            enforce_updates = on
                            visu_acl = rw
                            knx_dpt = 1
                            knx_send = 1/1/20
                            
                        [[[stop]]]
                            type = num
                            visu_acl = rw
                            enforce_updates = on
                            knx_dpt = 1
                            knx_send = 1/1/19
                        [[[pos]]]
                            type = num
                            visu_acl = rw
                            enforce_updates = on
                            knx_dpt = 5
                            knx_send = 1/1/19
                            knx_cache = 1/1/20
            logic.conf

            Code:
            [netzteil]                                                                                                                                                                                                                                                                 
                filename= netzteil.py                                                                                                                                                                                                                                                 
                watch_item = og.Dachfenster.*
            Damit wird immer wenn og.Dachfenster ausgelöst wird die folgende Logik ausgeführt:
            netzteil.py
            Code:
            #!/usr/bin/env python
                sh.og.netzteil24v(1)
            Leider wird das nichts, da sh.og.netzteil24v(1) nichts macht. Was muss da noch rein, dass an netzteil24v eine 1 gesendet wird?

            Das Log zeigt immer:
            Code:
            2014-10-17 11:49:37 ERROR    Main         Exception: unexpected indent (netzteil.py, line 2)
            Danke nochmal

            Kommentar


              #7
              Darf ich mal zwischenfragen, warum du das nicht ohne Logik löst?
              Dies sollte doch in den Aktoren alleine auch möglich sein?

              Ich frage das, weil mich aktuell das gleiche Problem quält.
              Ich finde ein 50W Netzeil für 23,7Stunden im Leerlauf, nicht cool.

              Danke

              Kommentar


                #8
                Hi, das steht da: falsche Einrückung!
                In Python ist es wichtig, wie weit die Zeilen eingerückt sind. Einfach bei Spalte 1 starten.
                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Zitat von mumpf Beitrag anzeigen
                  Hi, das steht da: falsche Einrückung!
                  In Python ist es wichtig, wie weit die Zeilen eingerückt sind. Einfach bei Spalte 1 starten.
                  Gruß, Waldemar
                  Ups, Danke, wie gesagt unter Python völliger Anfänger. Wieder was gelernt.

                  So alles geht nun, wer es nachbauen will:
                  item für das Netzteil anlegen, für die Jalousie sowieso:
                  Code:
                  [[netzteil]]
                              name = netzteil24v
                              sv_widget =   netzteil24v  {{ basic.flip('item.netzteil24v', 'item.netzteil24v') }} 
                              [[[netzteil24v]]]
                                  type = bool
                                  knx_dpt = 1
                                  knx_send = 1/0/26
                                  knx_listen = 1/0/26
                                  knx_init = 1/0/26
                                  visu_acl = rw
                                  
                  
                                  autotimer = 1m = 0
                                  
                      [[Dachfenster]]
                              name = Dachfenster    
                                  sv_widget =     Dachfenster Bad {{ device.shutter ('og.Dachfenster', 'Bad', 'og.Dachfenster.move', 'og.Dachfenster.stop', 'og.Dachfenster.pos','', '') }} 
                              [[[move]]]
                                  type = num
                                  enforce_updates = on
                                  visu_acl = rw
                                  knx_dpt = 1
                                  knx_send = 1/1/20
                                  
                              [[[stop]]]
                                  type = num
                                  visu_acl = rw
                                  enforce_updates = on
                                  knx_dpt = 1
                                  knx_send = 1/1/19
                              [[[pos]]]
                                  type = num
                                  visu_acl = rw
                                  enforce_updates = on
                                  knx_dpt = 5
                                  knx_send = 1/1/19
                                  knx_cache = 1/1/20
                  in die etc/logic.conf (den sogenannten "Überwacher")
                  Code:
                  [netzteil]                                                                                                                                                                                                                                                                 
                      filename = netzteil.py                                                                                                                                                                                                                                                 
                      watch_item = og.Dachfenster.*
                  Da wird überwacht ob og.Dachfenster.* was macht. also og.Dachfenster.move und og.Dachfenster.pos was machen. das * ist für alle da. Wenn was gemacht wird, wird die Datei netzteil.py ausgeführt.

                  anlegen unter logics/netzteil.py
                  Code:
                  #!/usr/bin/env python
                  sh.og.netzteil.netzteil24v(1)
                  Das wars. Bedenke aber das das Netzteil dann immer unter Last anläuft, da das immer bissel braucht. Wenn das OK ist dann ist das eine super Sache.


                  Darf ich mal zwischenfragen, warum du das nicht ohne Logik löst? Dies sollte doch in den Aktoren alleine auch möglich sein?
                  Kenne Deine Aktoren nicht, ich hab noch die alten von ABB drin. Aber das Problem ist auch nicht der Aktor (den kann man natürlich als "Treppenlicht Automat" (also einen Timer) laufen lassen. Dann würde das autotimer in den Items wegfallen.

                  Das Problem ist immer noch das der Taster nur ein Signal für hoch oder für runter senden. Das würde dazu führen das z.B. bei runter eine 1 gesendet wird und so das Netzteil (Aktor verbunden mit der Tasenschnittstelle) an geht. Aber wenn die Taste hoch sendet wird dann 0 geschickt und das Netzteil bleibt aus.

                  Durch die Minilogik wird nun nicht nach 1 oder 0 gefragt, sondern einfach ob was gemacht wird. Der Autotimer schaltet dann nach 1m wieder das Netzteil ab und fertig.

                  Gruß HAxley

                  Kommentar


                    #10
                    Hi,

                    ich hätte da noch ein paar Verbesserungsvorschläge...
                    • Deine Logik reagiert auch auf STOP und schaltet dabei das Netzeil ein - überflüssig
                    • Du hast die selben GA bei POS und MOVE/STOP - das ist so wohl nicht beabsichtigt oder?
                    • Ich meine, die Logik sollte nicht vom "Eingangssignal" abhängen, sondern von einem Status (vom Aktor kommend).
                      Das war wohl auch mit der Folgenden Frage gemeint:
                      Zitat von sabinellina Beitrag anzeigen
                      Dies sollte doch in den Aktoren alleine auch möglich sein?
                      Wenn Du z.B. einen Status "Motor fährt" hast, kannst Du in Abhängigkeit davon das Netzteil schalten. Der Vorteil ist, dass dann auch Automatikfunktionen klappen, Sperren beachtet werden und nicht solche Dinger wie "Einschalten bei STOP" passieren.


                    Ob man ganz ohne Logik auskommt, hängt allerdings sehr von der Applikation des Aktor ab.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      #11
                      Zitat von mumpf Beitrag anzeigen
                      Hi,

                      ich hätte da noch ein paar Verbesserungsvorschläge...
                      immer gern
                      • Deine Logik reagiert auch auf STOP und schaltet dabei das Netzeil ein - überflüssig
                      stimmt, aber macht das Kraut auch nicht fett. ;-) wer es weg haben will muss dann:
                      Code:
                       watch_item = og.Dachfenster_Bad.move* | og.Dachfenster_Bad.pos.*
                      • Du hast die selben GA bei POS und MOVE/STOP - das ist so wohl nicht beabsichtigt oder?
                      Doch, ich hab noch die alten Aktoren von ABB da geht "pos" ehh nicht.
                      • Ich meine, die Logik sollte nicht vom "Eingangssignal" abhängen, sondern von einem Status (vom Aktor kommend).
                      • kann man machen aber mir reicht es so.
                      • Das war wohl auch mit der Folgenden Frage gemeint:

                        Wenn Du z.B. einen Status "Motor fährt" hast, kannst Du in Abhängigkeit davon das Netzteil schalten. Der Vorteil ist, dass dann auch Automatikfunktionen klappen, Sperren beachtet werden und nicht solche Dinger wie "Einschalten bei STOP" passieren.

                    Ob man ganz ohne Logik auskommt, hängt allerdings sehr von der Applikation des Aktor ab.
                    Wenn es der Aktor hergibt dann geht das ggf. auch ohne Logik. Ich bin erst mal zufrieden das es geht und noch dazu das ich das am Ende doch selber hin bekommen hab.

                    Kommentar


                      #12
                      Hallo,

                      Zitat von sabinellina Beitrag anzeigen
                      Ich finde ein 50W Netzeil für 23,7Stunden im Leerlauf, nicht cool.
                      ich bin zwar kein Elektriker bzw. Elektroniker, aber das Netzteil braucht nicht 50W 24/7. Sondern nur einen geringen Bruchteil. Bei einem guten Netzteil geht das gegen Null. Und ob man dem Netzteil einen gefallen tut wenn man es häufig aus und anschaltet bezweifle ich.

                      Im Forum gibt es bestimmt jemanden qualifiziertes der meine beiden Punkte bestätigen oder entkräftigen kann.

                      Bis bald

                      Marcus

                      Kommentar


                        #13
                        Hi,

                        ich kenne Deine Aktoren nicht, aber der Vollständigkeit halber:
                        Zitat von Haxley Beitrag anzeigen
                        wer es weg haben will muss dann:
                        Code:
                         watch_item = og.Dachfenster_Bad.move* | og.Dachfenster_Bad.pos.*
                        Ja, aber ohne .* am Ende, also nur
                        Code:
                         watch_item = og.Dachfenster_Bad.move | og.Dachfenster_Bad.pos
                        Zitat von Haxley Beitrag anzeigen
                        Doch, ich hab noch die alten Aktoren von ABB da geht "pos" ehh nicht.
                        Wenn POS sowieso nicht geht, warum hast Du dann das Item? Bzw. warum weist Du dem Item Gruppenadressen zu? Vor allem mit dem falschen DPT? Auch wenn es derzeit geht, ich halte das für eine Fehlerquelle, die zu unerwartetem Verhalten führen kann und würde es so nicht lassen...
                        Zitat von Haxley Beitrag anzeigen
                        Ich bin erst mal zufrieden das es geht und noch dazu das ich das am Ende doch selber hin bekommen hab.
                        Klar, mich freut es auch, wenn ich ohne Nachfragen was hinbekomme... Viel Erfolg weiterhin!

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar

                        • Lädt...
                          X