Ankündigung

Einklappen
Keine Ankündigung bisher.

UZSU - mehrere Schaltuhren per Logic aus/einschalten?

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

    UZSU - mehrere Schaltuhren per Logic aus/einschalten?

    Hallo, ich versuche per Logic mehrere UZSUs per Logic abzuschalten.
    Leider klappt das nicht so richtig. Ich hänge die Logik unten mal an....

    Was soll passieren:
    Die UZSUs einiger Rolläden sollen, wenn wir alle Urlaub haben und Zuhause sind, abgeschaltet werden. Damit wir morgens nicht von den Rolläden geweckt werden.

    Was passiert:
    Die Logic läuft korrekt durch (Hier nur mal der wichtigste Teil - Ist eigentlich noch umfangreicher).
    Die UZSUs aller Rolläden werden in der SmartVisu auch richtig als abgeschaltet angezeigt (Aktiv = aus)

    Was ist falsch:
    Im Scheduler wird immer nur eine UZSU abgeschaltet. Für die restlichen werden die Schedulereinträge nicht gelöscht. Obwohl in der Visu die UZSU richtiger Weise aus ist.
    Wenn ich in der Visu die Uhr von Hand an und wieder ausschalte, wird der Scheduler Eintrag richtig gelöscht.
    Ich habe auch schon mal diverse time.sleep(5) Einträge zwischen die ausführenden Zeilen gebastelt, weil ich dachte das es vielleicht ein Zeitliches Problem ist. Das hat aber auch nichts gebracht.

    Hier die Logik:
    Code:
        value31 = sh.EG.Raum3.Rolladen1.move.schaltuhr()
        value40 = sh.EG.Raum4.RolladenAlle.move.schaltuhr()
        value41 = sh.EG.Raum4.Rolladen1.move.schaltuhr()
        value42 = sh.EG.Raum4.Rolladen2.move.schaltuhr()
        value50 = sh.EG.Raum5.RolladenAlle.move.schaltuhr()
        value51 = sh.EG.Raum5.Rolladen1.move.schaltuhr()
        value52 = sh.EG.Raum5.Rolladen2.move.schaltuhr()
        value61 = sh.EG.Raum6.Rolladen1.move.schaltuhr()
        setval31 = False
        setval40 = False
        setval41 = False
        setval42 = False
        setval50 = False
        setval51 = False
        setval52 = False
        setval61 = False
        value31['active'] = setval31
        value40['active'] = setval40
        value41['active'] = setval41
        value42['active'] = setval42
        value50['active'] = setval50
        value51['active'] = setval51
        value52['active'] = setval52
        value61['active'] = setval61
        sh.EG.Raum3.Rolladen1.move.schaltuhr(value31)
        sh.EG.Raum4.RolladenAlle.move.schaltuhr(value40)
        sh.EG.Raum4.Rolladen1.move.schaltuhr(value41)
        sh.EG.Raum4.Rolladen2.move.schaltuhr(value42)
        sh.EG.Raum5.RolladenAlle.move.schaltuhr(value50)
        sh.EG.Raum5.Rolladen1.move.schaltuhr(value51)
        sh.EG.Raum5.Rolladen2.move.schaltuhr(value52)
        sh.EG.Raum6.Rolladen1.move.schaltuhr(value61)
    Kann sich das mal jemand anschauen und gucken ob das Problem zwischen meinen Ohren ist?
    Zuletzt geändert von schuma; 29.12.2017, 21:18.

    #2
    Moin,
    ich mache auch soetwas mit der folgenden Logik. Damit klappt das eigentlich ganz gut. Zumindest habe ich noch keine negative Feststellungen gemacht.
    Allerdings muss ich zugeben, dass ich keinen Unterschied zu Deiner Logik sehe, ausser dass die drei Befehle direkt nacheinander stehen. Das sollte aber keinen Unterschied machen.

    Aber habe extra nochmal nachgesehen. Im Sheduler werden alle ordnungsgemäß entfernt.

    Code:
    #!/usr/bin/env python
    
    # ------------------------------------------------------------------------------------------------
    # Beschreibung
    # Die Funktion schaltet die Zeitschaltuhren saktiv, sofern der interne Zustand
    # Abwesenheit aktiviert wurde.
    # ------------------------------------------------------------------------------------------------
    
    # Für Debug Zwecke wird angezeigt das das Skript gestartet wurde
    logger.debug('Skript "logic_Rxx_USZU_Aktiv_Inaktiv.py" gestartet')
    
    if sh.ZENTRAL.SERVER.ABWESENHEIT_AKTIV():
        # Einschalten aller relevanter Zeitschaltuhren
        setval = True
    else:
        # Ausschalten aller relevanter Zeitschaltuhren
        setval = False
    
    # Ein- /Ausschalten aller relevanter Zeitschaltuhren
    # Jalousie Zeitschaltuhren
    # Jalousie WC
    value = sh.R13.ROLLO.POSITION.UZSU()
    value['active'] = setval
    sh.R13.ROLLO.POSITION.UZSU(value)
    # Jalousie Küche
    value = sh.R14.ROLLO.POSITION.UZSU()
    value['active'] = setval
    sh.R14.ROLLO.POSITION.UZSU(value)
    ...

    Kommentar


      #3
      Hallo loeserman
      Bist Du bei smarthomeng auf 1.4.1 und smartvisu auf 2.9?

      Ich kann mich auf den Kopf stellen.
      Bei mir wird immer nur eine schaltuhr (Raum 4) geschaltet. Die anderen werden zwar in der Visu abgeschaltet, die Items haben aber immer noch einen True bei "active".
      Ich dachte immer die Visu holt sich die Daten aus dem Cache der Smarthomeng.
      Kann sich jemand erklären, warum ich nicht alle Items beschreiben kann? Gibt es jetzt auch keine Fehlermeldung oder ähnliches.
      Funktioniert nur halt nicht.

      Ich hasse Dinge die eigentlich funktionieren müssten aber es nicht tun....

      Kommentar


        #4
        Noch etwas getestet....
        Ich kann die Items der Schaltuhren, von den Schaltuhren die sich nicht deaktivieren lassen, auch nicht mit einem einzigen Aufruf deaktivieren.

        Code:
        setval = false
        value = sh.EG.Raum6.Rolladen1.move.schaltuhr()
        value['active'] = setval
        sh.EG.Raum6.Rolladen1.move.schaltuhr(value)
        Obwohl ich da keinen Unterschied zu der Schaltuhr sehe, die sich problemlos aktivieren/deaktivieren lässt.

        EDIT: Geht doch.... Also das Item ändert in "active = false". aber im Scheduler wird es immer noch angezeigt! Und somit halt nicht aus dem Scheduler gelöscht.
        Zuletzt geändert von schuma; 30.12.2017, 17:52. Grund: Edit: geht doch

        Kommentar


          #5
          Ja, ich habe smarthomeng 1.4.1 und smartvisu 2.9 (develop).
          Kannst Du vielleicht mal eine schaltuhr die aktuell nicht geht bei dir komplett löschen und dann neu anlegen. Mal sehen, ob es dann geht.

          Kommentar


            #6
            Alles gelöscht inklusive Cache Datei. Neu gestartet.
            Aber keine Änderung....

            Msinn bmx Kann sich das von Euch einer erklären? Oder hat einer von Euch eine Vermutung?

            Kommentar


              #7
              Ich kann dazu nichts sagen ich nutze UZSU nicht und habe mir das Plugin nie angesehen.
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #8
                Du kannst mal aus der run() methode den Code

                Code:
                        for item in self._items:
                            if 'active' in self._items[item]:
                                if self._items[item]['active']:
                                    self._schedule(item)
                ändern in:

                Code:
                        for item in self._items:
                                    self._schedule(item)
                und dann berichten ob das bei Dir wie gewünscht funktioniert.

                Kommentar


                  #9
                  Zitat von bmx Beitrag anzeigen
                  und dann berichten ob das bei Dir wie gewünscht funktioniert.
                  Hallo bmx. Erst einmal ein frohes gesundes neues Jahr!

                  Ich habe das mal geändert und getestet. Aber leider ist das Ergebnis unverändert.

                  Komisch ist auch, dass ich mit der Logik, die inzwischen recht einfach ist, immer nur die Raum4 Schaltuhr ausschalten kann.
                  Raum3 und Raum6 sind zum Test auch an, werden aber nicht im Scheduler gelöscht. Ist also nicht mal die erste oder letzte Schaltuhr in der Logik.
                  In der Visu und im Item sind die Uhren aber ausgeschaltet (active = false).

                  Hier noch mal die nun stark vereinfachte Logik:
                  Code:
                  setval = False
                  
                  value = sh.EG.Raum3.Rolladen1.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum3.Rolladen1.move.schaltuhr(value)
                  value = sh.EG.Raum4.RolladenAlle.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum4.RolladenAlle.move.schaltuhr(value)
                  value = sh.EG.Raum4.Rolladen1.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum4.Rolladen1.move.schaltuhr(value)
                  value = sh.EG.Raum4.Rolladen2.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum4.Rolladen2.move.schaltuhr(value)
                  value = sh.EG.Raum5.RolladenAlle.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum5.RolladenAlle.move.schaltuhr(value)
                  value = sh.EG.Raum5.Rolladen1.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum5.Rolladen1.move.schaltuhr(value)
                  value = sh.EG.Raum5.Rolladen2.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum5.Rolladen2.move.schaltuhr(value)
                  value = sh.EG.Raum6.Rolladen1.move.schaltuhr()
                  value['active'] = setval
                  sh.EG.Raum6.Rolladen1.move.schaltuhr(value)

                  Kommentar


                    #10
                    Dann solltest Du mal im debuglo schauen, was so passiert...

                    Kommentar


                      #11
                      Ich habe smarthomeng nun mal im debugmodus gestartet und das Log ab dem Auslösen der Logik "Test" angehängt.
                      Ich finde aber auch dort nur den scheduler remove eintrag für den Raum4.
                      Ich werde da nicht so recht schlau draus....

                      bmx Kannst Du Dir das auch noch mal anschauen?
                      Zuletzt geändert von schuma; 03.01.2018, 20:27.

                      Kommentar


                        #12
                        Kannst du auch Mal die item.config hochladen. Was passiert mit Raum 5? Raum 4 und 5 haben beide auch in der config etwas mit alle stehen. Die beiden die nicht gehen (3 und 6) haben das nicht.

                        Kommentar


                          #13
                          Das ist richtig so.
                          Es gibt in diesen Räumen zwei Rolläden.
                          Dadurch gibt es eine UZSU für Alle Rolläden und jeweils eine für die einzelnen Rollöden.

                          In den anderen Räumen gibt es nur einen Rolladen und dementsprechend keine UZSU für Alle Rolläden.

                          Ich schließe aber auch ein Item Problem aus. Da die Uhren ja, wenn man sie von Hand über die Visu bedient, einwandfrei funktionieren.

                          Nur eben über die Logic klappt es nicht die Scheduler Einträge zu löschen.
                          Wobei die Items ja auf False gesetzt werden und In Visu auch die Uhren aus sind. Schedulereintrag bleibt aber bei den UZSU vorhanden. Außer bei Raum4.

                          Kommentar


                            #14
                            Sorry, mit dem Log kann ich nix anfangen. Da sollten schon die Debugmeldungen von der uzsu drin sein. Bitte prüfe mal Deine Loggingeinstellungen das das mit angezeigt wird.

                            Kommentar


                              #15
                              bmx :
                              So, habe jetzt noch mal die logging.yaml neu eingestellt (uzsu und scheduler).
                              In dem Zip sind zwei Dateien. Die Eine mit allem, die Andere nur mit uzsu und scheduler.

                              Bei 16:43 Uhr habe ich die Logik "Test" ausgelöst die die drei Rolläden move (Raum3, Raum4, Raum6) scheduler Einträge löschen sollte.
                              Zuletzt geändert von schuma; 05.01.2018, 12:06.

                              Kommentar

                              Lädt...
                              X