Ankündigung

Einklappen
Keine Ankündigung bisher.

import in logik funktioniert nicht

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

    import in logik funktioniert nicht

    Hallo,

    ich probiere folgendes:
    Code:
    try:
        import colorsys as cs
    except:
        logger.error("could not import colorsys")
    
    def hsv2rgb(h,s,v):
        return tuple(round(i * 100) for i in cs.hsv_to_rgb(h,s,v))
    Das gibt mir folgendes:
    Code:
    2018-10-09 20:33:15 ERROR    scheduler    logics.hsv       Logic: logics.hsv, File: /usr/local/smarthome/logics/hsv.py, Line: 9, Method: hsv2rgb, Exception: name 'cs' is not defined -- scheduler.py:_task:507
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/scheduler.py", line 493, in _task
        exec(obj.bytecode)
      File "/usr/local/smarthome/logics/hsv.py", line 15, in <module>
        r,g,b=hsv2rgb(h,s,v)
      File "/usr/local/smarthome/logics/hsv.py", line 9, in hsv2rgb
        return tuple(round(i * 100) for i in cs.hsv_to_rgb(h,s,v))
    NameError: name 'cs' is not defined
    auch probiert habe ich:
    import colorsys und später colorsys.hsv_to_rgb()
    from colorsys import hsv_to_rgb und später hsv_to_rgb()

    Alles ohne Erfolg.
    Was übersehe ich?

    Colorsys gehört zu python und am python-prompt funktioniert der gleiche Code.


    Gruß,
    Hendrik

    ​​​​​​​

    #2
    Import in einer Logik geht auf jeden Fall ganz normal. Poste doch mal den ganzen Code. Der Scheduler kommt von einem cycle oder scheduler.add/trigger?

    Kommentar


      #3
      Hallo,

      danke für deine Antwort. Ja, ich habe auch schon in logiken normal importiert.
      Die Logik hatte ich im Webinterface ausgelöst.
      Hab es aber auch per cycle versucht
      Code:
      2018-10-09  20:53:39 ERROR    logics.hsv   Logic: logics.hsv, File: /usr/local/smarthome/logics/hsv.py, Line: 9, Method: hsv2rgb, Exception: name 'cs' is not defined
      Traceback (most recent call last):
        File "/usr/local/smarthome/lib/scheduler.py", line 493, in _task
          exec(obj.bytecode)
        File "/usr/local/smarthome/logics/hsv.py", line 15, in <module>
          r,g,b=hsv2rgb(h,s,v)
        File "/usr/local/smarthome/logics/hsv.py", line 9, in hsv2rgb
          return tuple(round(i * 100) for i in cs.hsv_to_rgb(h,s,v))
      NameError: name 'cs' is not defined
      Hier der ganze code
      Code:
      #!/usr/bin/env python3
      # hsv.py
      try:
          import colorsys as cs
      except:
          logger.error("could not import colorsys")
      
      def hsv2rgb(h,s,v):
          return tuple(round(i * 100) for i in cs.hsv_to_rgb(h,s,v))
      
      h=sh.eg.Wohnzimmer.Voute.sequencer.h()
      s=0.5
      v=0.5
      
      r,g,b=hsv2rgb(h,s,v)
      sh.eg.Wohnzimmer.Voute.r(r)
      sh.eg.Wohnzimmer.Voute.g(g)
      sh.eg.Wohnzimmer.Voute.b(b)
      
      if h>1:
          h=0
      sh.eg.Wohnzimmer.Voute.sequencer.h(h+0.05)
      Gruß,
      Hendrik

      Kommentar


        #4
        Das Problem liegt bei der Funktion. du musst das import (auch) dort rein stopfen.

        Ob's ne bessere Lösung gibt, weiß ich nicht....

        Kommentar


          #5
          Ui. Danke.
          Das hatte ich anders gelernt

          Kommentar


            #6
            Zitat von henfri Beitrag anzeigen
            Das hatte ich anders gelernt
            In einem Python Modul kannst Du imports und Variablen global definieren und dann in den Funktionen nutzen.
            Da eine Logik kein Python Modul sondern ein Code-Block ist, funktioniert das hier nicht.
            Viele Grüße
            Martin

            Stay away from negative people. They have a problem for every solution.

            Kommentar

            Lädt...
            X