Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. PWM-Display dimmen: Python-Skript sinnvoll steuern

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    PWM-Display dimmen: Python-Skript sinnvoll steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      e-i-k-e last edited by e-i-k-e

      Guten Abend zusammen,

      ich habe auf einem Raspberry Pi mit einem ioBroker-Slave das unten aufgeführte Python-Skript laufen. Dieses steuert die Helligkeit eines angeschlossenen Displays, indem es Werte zwischen 0 % und 100 % entgegennimmt und umwandelt.

      66c92a64-c72d-40c0-97ea-b30995952a74-image.png

      Um das Skript durch den Benutzer „iobroker“ ausführen zu lassen, habe ich es entsprechend ( /usr/local/bin/) verschoben.

      Über den ioBroker Slave/JS-Adapter kann ich das Skript aktivieren, und der erste Wert wird korrekt geschrieben.

      190f7077-43d6-492f-801a-dda58c623624-image.png

      Wenn ich allerdings versuche, einen weiteren Wert zu schreiben, funktioniert das nicht, da das Skript bei einer erneuten Ausführung offenbar nicht wie erwartet reagiert.

      b16c0560-74a7-4997-8480-6b86847a8150-image.png

      Wie kann ich Blockly so anpassen, dass es, nachdem das Skript einmal gestartet wurde, weiterhin einzelne Werte vorgeben kann?

      Anbei das verwendete Skript:

      import sys
      from gpiozero import PWMLED
      from time import sleep
      
      def main():
          led = PWMLED(18)
      
          # Check if a value is passed as an argument
          if len(sys.argv) > 1:
              try:
                  value = float(sys.argv[1])
                  if value > 100:
                      led.value = 1
                  elif value < 0:
                      led.value = 0
                  else:
                      led.value = value / 100
              except ValueError:
                  sys.exit(1)
          else:
              led.value = 1  # Default to full brightness
      
          # Optional interactive loop
          try:
              while True:
                  try:
                      value = input()
                      if value.lower() == "exit":
                          break
                      value = float(value)
                      if value > 100:
                          led.value = 1
                      elif value < 0:
                          led.value = 0
                      else:
                          led.value = value / 100
                  except ValueError:
                      pass
                  sleep(1)
          except KeyboardInterrupt:
              # Clean exit on Ctrl+C
              sys.exit(0)
      
      if __name__ == "__main__":
          main()
      
      

      Viele Grüße

      1 Reply Last reply Reply Quote 0
      • E
        e-i-k-e last edited by

        Hat hier jemand eine Idee dazu ?

        arteck B 2 Replies Last reply Reply Quote 0
        • arteck
          arteck Developer Most Active @e-i-k-e last edited by

          @e-i-k-e du musst die zahl in eine variable schreiben und diese dann verwenden. zur zeit rufst du hardcoded 0 oder 100 auf

          E 2 Replies Last reply Reply Quote 0
          • E
            e-i-k-e @arteck last edited by

            @arteck sagte in PWM-Display dimmen: Python-Skript sinnvoll steuern:

            @e-i-k-e du musst die zahl in eine variable schreiben und diese dann verwenden. zur zeit rufst du hardcoded 0 oder 100 auf

            Kann ich das direkt über ein Blockly machen?

            1 Reply Last reply Reply Quote 0
            • E
              e-i-k-e @arteck last edited by

              @arteck sagte in PWM-Display dimmen: Python-Skript sinnvoll steuern:

              @e-i-k-e du musst die zahl in eine variable schreiben und diese dann verwenden. zur zeit rufst du hardcoded 0 oder 100 auf

              Kannst du mich da etwas unter die Arme greifen?

              1 Reply Last reply Reply Quote 0
              • arteck
                arteck Developer Most Active last edited by

                sry blockly ist nicht so meinz

                1 Reply Last reply Reply Quote 0
                • B
                  Blockmove @e-i-k-e last edited by

                  @e-i-k-e said in PWM-Display dimmen: Python-Skript sinnvoll steuern:

                  Hat hier jemand eine Idee dazu ?

                  Schmeiss mal den Teil raus

                      # Optional interactive loop
                      try:
                          while True:
                              try:
                                  value = input()
                                  if value.lower() == "exit":
                                      break
                                  value = float(value)
                                  if value > 100:
                                      led.value = 1
                                  elif value < 0:
                                      led.value = 0
                                  else:
                                      led.value = value / 100
                              except ValueError:
                                  pass
                              sleep(1)
                      except KeyboardInterrupt:
                          # Clean exit on Ctrl+C
                          sys.exit(0)
                  

                  So wie ich es sehe wartet das Script da auf eine Eingabe von der Tastatur.
                  Einfach mal probieren ... Bin nicht so der Python - Raspi - Fachmann.

                  E 1 Reply Last reply Reply Quote 0
                  • E
                    e-i-k-e @Blockmove last edited by

                    @blockmove sagte in PWM-Display dimmen: Python-Skript sinnvoll steuern:

                    @e-i-k-e said in PWM-Display dimmen: Python-Skript sinnvoll steuern:

                    Hat hier jemand eine Idee dazu ?

                    Schmeiss mal den Teil raus

                        # Optional interactive loop
                        try:
                            while True:
                                try:
                                    value = input()
                                    if value.lower() == "exit":
                                        break
                                    value = float(value)
                                    if value > 100:
                                        led.value = 1
                                    elif value < 0:
                                        led.value = 0
                                    else:
                                        led.value = value / 100
                                except ValueError:
                                    pass
                                sleep(1)
                        except KeyboardInterrupt:
                            # Clean exit on Ctrl+C
                            sys.exit(0)
                    

                    So wie ich es sehe wartet das Script da auf eine Eingabe von der Tastatur.
                    Einfach mal probieren ... Bin nicht so der Python - Raspi - Fachmann.

                    Danke für deinen Vorschlag.
                    Die Eingabeeinforderung wird beendet, allerdings funktioniert das Skript dann nicht mehr - es wird nicht mehr gedimmt.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    977
                    Online

                    31.7k
                    Users

                    79.7k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    280
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo