Ankündigung

Einklappen
Keine Ankündigung bisher.

Logiken in Smarthome.py oder Verknüpfung?

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

    Logiken in Smarthome.py oder Verknüpfung?

    Hallo zusammen,

    Ich bin gerade dabei eine logik zu schreiben um von einem Gira Taster (mit 1 byte wert senden) eine kleine Farbauswahl zu realisieren.
    Auch nach langem Linux studieren und Versuchen stell ich wohl zu doof an. Entweder ich hab es so das immer den letzen befehl ausgeführt wird (dann sehe ich wie die RGBW schnell durchfadet und bei rot stehen bleibt) oder sobald ich elif einfüge dann halt ein error kommt. Hab schon die Einrückung überprüft alles leerzeichen entweder 4 oder 8 bin leider mit meinem Latein am Ende und frage hier nun mal nach was ich den für einen Fehler mache.

    meine rgbw.py
    Code:
    logger.info ('farbwertverstellen start')
    
        if sh.rgbw.farbwerttaster() > 25:
            sh.rgbw.farbe.r(255)
            sh.rgbw.farbe.g(0)
            sh.rgbw.farbe.b(0)
            sh.rgbw.farbe.w(0)
    logger.info ('farbwert rot')
    
        elif sh.rgbw.farbwerttaster() > 25 and sh.rgbw.farbwerttaster() < 50:      
            sh.rgbw.farbe.r(0)
            sh.rgbw.farbe.g(255)
            sh.rgbw.farbe.b(0)
            sh.rgbw.farbe.w(0)
    logger.info ('farbwert grün')
    
        elif sh.rgbw.farbwerttaster() > 50 and sh.rgbw.farbwerttaster() < 75:    
            sh.rgbw.farbe.r(0)
            sh.rgbw.farbe.g(0)
            sh.rgbw.farbe.b(255)
            sh.rgbw.farbe.w()
    logger.info ('farbwert blau')
    
        elif sh.rgbw.farbwerttaster() > 75
            sh.rgbw.farbe.r(0)
            sh.rgbw.farbe.g(0)
            sh.rgbw.farbe.b(0)
            sh.rgbw.farbe.w(255)
    logger.info ('farbwert ww')
    
    
        else:
    logger.info ('farbwert ww')
    #wert von Taster abfragen und dann umstellen
    die dazugehörigen items


    Code:
    [rgbw]
        [[farbwerttaster]]    #item für farbvertellung von taster 0-65535
            type = num
             visu_acl = rw
                  knx_dpt = 5001
                  knx_listen = 1/5/15
                
        
    
        [[schalten]]
         type = bool
                  visu_acl = rw
                  knx_dpt = 1
                  knx_listen = 1/5/14
                  knx_send = 1/5/12
                  knx_init = 1/5/14
    
    
    
        [[farbe]]    #RGB Item für den Aktor
        type = list
        knx_dpt = 232
    
        [[[r]]]    #Item für die Colordisk-Auswahl
            visu_acl = rw
            type = num
            visu = true
            knx_dpt = 5
            knx_init = 1/5/4
            knx_listen = 1/5/4
            knx_send = 1/5/0
            knx_cache = 1/5/4
    
        [[[g]]]    #Item für die Colordisk-Auswahl
            visu_acl = rw
            type = num
            visu = true
            knx_dpt = 5
            knx_init = 1/5/5
            knx_listen = 1/5/5
            knx_send = 1/5/1
            knx_cache = 1/5/5
    
        [[[b]]]    #Item für die Colordisk-Auswahl
            visu_acl = rw
            type = num
            visu = true
            knx_dpt = 5
            knx_init = 1/5/6
            knx_listen = 1/5/6
            knx_send = 1/5/2
            knx_cache = 1/5/6
    
    
    
        [[[w]]]    #Item für die Colordisk-Auswahl
            visu_acl = rw
            type = num
            visu = true
            knx_dpt = 5
            knx_dpt = 5
            knx_init = 1/5/7
            knx_listen = 1/5/7
            knx_send = 1/5/3
            knx_cache = 1/5/7
    und der eintrag in der logic.conf

    Code:
    [rgbwtaster]
        filename = rgbw.py
        watch_item = rgbw.farbwerttaster

    hier noch die Fehlermeldung aus dem log

    2015-11-16 16:08:17,494 DEBUG Main wunderground next time: 2015-11-16 16:08:31+01:00 -- scheduler.py:_next_time:289
    2015-11-16 16:08:17,499 DEBUG Main Logic: Mail_alarm -- logic.py:__init__:44
    2015-11-16 16:08:17,520 DEBUG Main Logic: env_stat -- logic.py:__init__:44
    2015-11-16 16:08:17,535 DEBUG Main env_stat next time: 2015-11-16 16:08:28+01:00 -- scheduler.py:_next_time:289
    2015-11-16 16:08:17,540 DEBUG Main Logic: Mail_scharf -- logic.py:__init__:44
    2015-11-16 16:08:17,555 DEBUG Main Logic: inmail -- logic.py:__init__:44
    2015-11-16 16:08:17,563 DEBUG Main Logic: rgbwtaster -- logic.py:__init__:44
    2015-11-16 16:08:17,576 ERROR Main Exception: unexpected indent (rgbw.py, line 2) -- logic.py:generate_bytecode:121
    Traceback (most recent call last):
    File "/usr/smarthome/lib/logic.py", line 119, in generate_bytecode
    self.bytecode = compile(code, self.filename, 'exec')
    File "/usr/smarthome/logics/rgbw.py", line 2
    if sh.rgbw.farbwerttaster() > 25:
    ^
    IndentationError: unexpected indent
    2015-11-16 16:08:17,579 DEBUG Connections KNX: connected to 127.0.0.1:6720 -- connection.py:connect:386
    2015-11-16 16:08:17,597 DEBUG Main Logic: hello -- logic.py:__init__:44
    2015-11-16 16:08:17,600 DEBUG Connections KNX: reading eibd cache -- __init__.py:handle_connect:113
    2015-11-16 16:08:17,609 DEBUG Main

    Ich danke schon mal im Voraus für die Hilfe.

    Andy
    Zuletzt geändert von Tevio; 16.11.2015, 16:36.

    #2
    Deine Logik wird nicht ausgeführt. Das liegt daran, dass du in der zweiten Zeile das "if" eingerückt hast. Ich würde empfehlen, dir erst die Grundlagen der Python-Programmierung anzueignen, bevor du versuchst, Logiken mit smarthome.py zu programmieren.

    Kommentar


      #3
      Hi,

      "unexpected indent" meint "Einrückungsfehler". Python ist eine Sprache, bei der Einrückungen ein Teil der Syntax sind. Vereinfacht gesagt sind Deine if's zu weit eingerückt und die logger zu weit ausgerückt. Die folgende Struktur sollte grob passen:

      Code:
      logger...
      if ...
          sh...
          ...
          logger...
      elif ...
          ...
      Ansonsten ist noch anzumerken:
      • Bei Deinen Bedingungen meinst Du als erstes sicher < 25
      • Du hast die Werte 25, 50 und 75 nicht abgedeckt (die Umkehrung von <50 ist >=50 und nicht >50)
      • Dein Item farbwerttaster ist vom dpt 5.001 und bewegt sich damit in den Werten von 0-100 (und nicht wie im Kommentar steht von 0-65535)
      Hoffe, das hilft,

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #4
        Hi Waldemar,

        Vielen Dank das hat mir sehr geholfen. Es läuft alles und endlich hab die ganzen Toturials kapiert.
        Mir war das klar mit den Einrückungen nur hab ich das wohl falsch verstanden zwecks den abständen. Das mit der Umkehrung hat mich auch sehr viel weiter gebracht.
        Das mit dem Item wusste ich hab den Kommentar noch von dpt 9 stehen. So läuft es jetzt auch super.
        Nochmals vielen Dank für die Hilfe.

        Gruß
        Andy

        Kommentar

        Lädt...
        X