Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Geekworm X1202 USV Variable in IObroker übernehmen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Geekworm X1202 USV Variable in IObroker übernehmen

Scheduled Pinned Locked Moved Hardware
45 Posts 5 Posters 3.7k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Lieggie

    @oliverio
    Guten Morgen , sorry das ich mich erst jetzt Melde .Ich war gestern verhindert.
    ich habe wie du gesagt hast nun das Script rin kopiert. bekomme aber nun diesen fehler

    javascript.0	10:12:51.180	info	Stopping script script.js.USV
    javascript.0	10:12:53.042	info	Start JavaScript script.js.USV (Javascript/js)
    javascript.0	10:12:53.058	error	script.js.USV: Error: EINVAL: invalid argument, write
    javascript.0	10:12:53.059	error	at script.js.USV:26:18
    javascript.0	10:12:53.060	error	at script.js.USV:169:3
    

    ich glaub hier ist noch was faul
    pi3.JPG

    L Offline
    L Offline
    Lieggie
    wrote on last edited by
    #22

    @lieggie said in Geekworm X1202 USV Variable in IObroker übernehmen:

    @oliverio
    Guten Morgen , sorry das ich mich erst jetzt Melde .Ich war gestern verhindert.
    ich habe wie du gesagt hast nun das Script rin kopiert. bekomme aber nun diesen fehler

    javascript.0	10:12:51.180	info	Stopping script script.js.USV
    javascript.0	10:12:53.042	info	Start JavaScript script.js.USV (Javascript/js)
    javascript.0	10:12:53.058	error	script.js.USV: Error: EINVAL: invalid argument, write
    javascript.0	10:12:53.059	error	at script.js.USV:26:18
    javascript.0	10:12:53.060	error	at script.js.USV:169:3
    

    ich glaub hier ist noch was faul
    pi3.JPG

    avascript.0
    	2024-09-15 10:34:58.719	error	at Script.runInContext (node:vm:148:12)
    javascript.0
    	2024-09-15 10:34:58.719	error	at script.js.USV:169:3
    javascript.0
    	2024-09-15 10:34:58.719	error	at script.js.USV:26:18
    javascript.0
    	2024-09-15 10:34:58.719	error	at new Gpio (/opt/iobroker/node_modules/@iobroker-javascript.0/onoff/onoff.js:172:36)
    javascript.0
    	2024-09-15 10:34:58.718	error	at exportGpio (/opt/iobroker/node_modules/@iobroker-javascript.0/onoff/onoff.js:18:8)
    javascript.0
    	2024-09-15 10:34:58.718	error	at Object.writeFileSync (node:fs:2368:20)
    javascript.0
    	2024-09-15 10:34:58.718	error	script.js.USV: Error: EINVAL: invalid argument, write
    
    1 Reply Last reply
    0
    • paul53P paul53

      @lieggie sagte: hier ist noch was faul

      Die roten Wellenlinien des Javascript-Editors kann man ignorieren, wenn die beiden NPM-Module in der Konfiguration der Javascript-Instanz eingetragen sind und es bei der Installation der Module keine Fehlermeldungen gab.

      L Offline
      L Offline
      Lieggie
      wrote on last edited by
      #23

      @paul53 said in Geekworm X1202 USV Variable in IObroker übernehmen:

      @lieggie sagte: hier ist noch was faul

      Die roten Wellenlinien des Javascript-Editors kann man ignorieren, wenn die beiden NPM-Module in der Konfiguration der Javascript-Instanz eingetragen sind und es bei der Installation der Module keine Fehlermeldungen gab.

      ich habe die beiden instanzen instaliert da bei gab es keinen Fehler
      sudo npm install onoff
      sudo npm install i2c-bus

      was mir nur aufgefallen ist das onoff nur bis Node 16 unterstützt wird. ich habe aber 20 am laufen

      Thomas BraunT paul53P 2 Replies Last reply
      0
      • L Lieggie

        @paul53 said in Geekworm X1202 USV Variable in IObroker übernehmen:

        @lieggie sagte: hier ist noch was faul

        Die roten Wellenlinien des Javascript-Editors kann man ignorieren, wenn die beiden NPM-Module in der Konfiguration der Javascript-Instanz eingetragen sind und es bei der Installation der Module keine Fehlermeldungen gab.

        ich habe die beiden instanzen instaliert da bei gab es keinen Fehler
        sudo npm install onoff
        sudo npm install i2c-bus

        was mir nur aufgefallen ist das onoff nur bis Node 16 unterstützt wird. ich habe aber 20 am laufen

        Thomas BraunT Online
        Thomas BraunT Online
        Thomas Braun
        Most Active
        wrote on last edited by
        #24

        @lieggie

        Knall dir BITTE KEINE npm-Module per root in das System!!!!

        Linux-Werkzeugkasten:
        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
        NodeJS Fixer Skript:
        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

        1 Reply Last reply
        0
        • L Lieggie

          @paul53 said in Geekworm X1202 USV Variable in IObroker übernehmen:

          @lieggie sagte: hier ist noch was faul

          Die roten Wellenlinien des Javascript-Editors kann man ignorieren, wenn die beiden NPM-Module in der Konfiguration der Javascript-Instanz eingetragen sind und es bei der Installation der Module keine Fehlermeldungen gab.

          ich habe die beiden instanzen instaliert da bei gab es keinen Fehler
          sudo npm install onoff
          sudo npm install i2c-bus

          was mir nur aufgefallen ist das onoff nur bis Node 16 unterstützt wird. ich habe aber 20 am laufen

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #25

          @lieggie sagte:

          sudo npm install onoff
          sudo npm install i2c-bus

          So ist es falsch! Der Javascript-Adapter installiert sie selbst in das richtige Verzeichnis, nachdem sie in der Konfiguration unter "Zusätzliche NPM-Module" eingetragen wurden.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          L 1 Reply Last reply
          0
          • paul53P paul53

            @lieggie sagte:

            sudo npm install onoff
            sudo npm install i2c-bus

            So ist es falsch! Der Javascript-Adapter installiert sie selbst in das richtige Verzeichnis, nachdem sie in der Konfiguration unter "Zusätzliche NPM-Module" eingetragen wurden.

            L Offline
            L Offline
            Lieggie
            wrote on last edited by Lieggie
            #26

            @paul53 said in Geekworm X1202 USV Variable in IObroker übernehmen:

            @lieggie sagte:

            sudo npm install onoff
            sudo npm install i2c-bus

            So ist es falsch! Der Javascript-Adapter installiert sie selbst in das richtige Verzeichnis, nachdem sie in der Konfiguration unter "Zusätzliche NPM-Module" eingetragen wurden.

            dann müssen sie ja da sein weil eingetragen im Javascript Adapter sind sie ja

            HomoranH paul53P Thomas BraunT 3 Replies Last reply
            0
            • L Lieggie

              @paul53 said in Geekworm X1202 USV Variable in IObroker übernehmen:

              @lieggie sagte:

              sudo npm install onoff
              sudo npm install i2c-bus

              So ist es falsch! Der Javascript-Adapter installiert sie selbst in das richtige Verzeichnis, nachdem sie in der Konfiguration unter "Zusätzliche NPM-Module" eingetragen wurden.

              dann müssen sie ja da sein weil eingetragen im Javascript Adapter sind sie ja

              HomoranH Do not disturb
              HomoranH Do not disturb
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #27

              @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

              dann müssen sie ja da sein weil eingetragen im om adapter sind sie ja

              Was willst du damit sagen?
              Wo müssen sie sein?

              Was ist der om Adapter?

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              L 1 Reply Last reply
              0
              • L Lieggie

                @paul53 said in Geekworm X1202 USV Variable in IObroker übernehmen:

                @lieggie sagte:

                sudo npm install onoff
                sudo npm install i2c-bus

                So ist es falsch! Der Javascript-Adapter installiert sie selbst in das richtige Verzeichnis, nachdem sie in der Konfiguration unter "Zusätzliche NPM-Module" eingetragen wurden.

                dann müssen sie ja da sein weil eingetragen im Javascript Adapter sind sie ja

                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #28

                @lieggie sagte: dann müssen sie ja da sein weil eingetragen im om adapter sind sie ja

                Ja, denn die Fehlermeldung

                	2024-09-15 10:34:58.718	error	at exportGpio (/opt/iobroker/node_modules/@iobroker-javascript.0/onoff/onoff.js:18:8)
                

                zeigt das Vorhandensein im richtigen Verzeichnis.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Reply Last reply
                0
                • HomoranH Homoran

                  @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                  dann müssen sie ja da sein weil eingetragen im om adapter sind sie ja

                  Was willst du damit sagen?
                  Wo müssen sie sein?

                  Was ist der om Adapter?

                  L Offline
                  L Offline
                  Lieggie
                  wrote on last edited by
                  #29

                  @homoran said in Geekworm X1202 USV Variable in IObroker übernehmen:

                  @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                  dann müssen sie ja da sein weil eingetragen im om adapter sind sie ja

                  Was willst du damit sagen?
                  Wo müssen sie sein?

                  Was ist der om Adapter?

                  sollte natürlich Javascript Adapter sein...... so ist das mit 2 kleinen Kindern neben bei

                  HomoranH 1 Reply Last reply
                  0
                  • L Lieggie

                    @paul53 said in Geekworm X1202 USV Variable in IObroker übernehmen:

                    @lieggie sagte:

                    sudo npm install onoff
                    sudo npm install i2c-bus

                    So ist es falsch! Der Javascript-Adapter installiert sie selbst in das richtige Verzeichnis, nachdem sie in der Konfiguration unter "Zusätzliche NPM-Module" eingetragen wurden.

                    dann müssen sie ja da sein weil eingetragen im Javascript Adapter sind sie ja

                    Thomas BraunT Online
                    Thomas BraunT Online
                    Thomas Braun
                    Most Active
                    wrote on last edited by Thomas Braun
                    #30

                    @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                    dann müssen sie ja da sein weil eingetragen im Javascript Adapter sind sie ja

                    Dann schau nach...
                    Und schau auch wo jetzt die per sudo reingeballerten Module liegen und hau die wieder raus.

                    cd /opt/iobroker
                    npm ls onoff
                    npm ls i2c-bus
                    

                    Linux-Werkzeugkasten:
                    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                    NodeJS Fixer Skript:
                    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                    1 Reply Last reply
                    0
                    • L Lieggie

                      @homoran said in Geekworm X1202 USV Variable in IObroker übernehmen:

                      @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                      dann müssen sie ja da sein weil eingetragen im om adapter sind sie ja

                      Was willst du damit sagen?
                      Wo müssen sie sein?

                      Was ist der om Adapter?

                      sollte natürlich Javascript Adapter sein...... so ist das mit 2 kleinen Kindern neben bei

                      HomoranH Do not disturb
                      HomoranH Do not disturb
                      Homoran
                      Global Moderator Administrators
                      wrote on last edited by
                      #31

                      @lieggie und wo müssen sie sein?

                      selbst wenn durch den Eintrag im js Adapter

                      @paul53 sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                      das Vorhandensein im richtigen Verzeichnis

                      vorliegt, kann durch

                      @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                      sudo npm install onoff
                      sudo npm install i2c-bus

                      es zusätzlich noch einmal woanders installiert sein

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      L 1 Reply Last reply
                      0
                      • HomoranH Homoran

                        @lieggie und wo müssen sie sein?

                        selbst wenn durch den Eintrag im js Adapter

                        @paul53 sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                        das Vorhandensein im richtigen Verzeichnis

                        vorliegt, kann durch

                        @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                        sudo npm install onoff
                        sudo npm install i2c-bus

                        es zusätzlich noch einmal woanders installiert sein

                        L Offline
                        L Offline
                        Lieggie
                        wrote on last edited by
                        #32

                        @homoran

                        Sie lagen im home/pi habe sie nun mit
                        sudo npm uninstall onoff
                        wieder entfernt.

                        ich sollte weiter mit blockly basteln das Script kram liegt mir nicht.

                        Thomas BraunT OliverIOO 2 Replies Last reply
                        0
                        • L Lieggie

                          @homoran

                          Sie lagen im home/pi habe sie nun mit
                          sudo npm uninstall onoff
                          wieder entfernt.

                          ich sollte weiter mit blockly basteln das Script kram liegt mir nicht.

                          Thomas BraunT Online
                          Thomas BraunT Online
                          Thomas Braun
                          Most Active
                          wrote on last edited by
                          #33

                          @lieggie

                          Und gewöhn dir den exzessiven Einsatz von sudo ab. Da ist im Kontext vom ioBroker eigentlich nie erforderlich und zu 99% einfach falsch.

                          Linux-Werkzeugkasten:
                          https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                          NodeJS Fixer Skript:
                          https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                          iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                          L 1 Reply Last reply
                          0
                          • Thomas BraunT Thomas Braun

                            @lieggie

                            Und gewöhn dir den exzessiven Einsatz von sudo ab. Da ist im Kontext vom ioBroker eigentlich nie erforderlich und zu 99% einfach falsch.

                            L Offline
                            L Offline
                            Lieggie
                            wrote on last edited by
                            #34

                            Kann es vielleicht daran liegen das ich einen Rpi5 nutze mit Bookworm?
                            habe gerade gelesen das einige User probleme mit den GPIO in verbindung mit bookworm haben

                            Thomas BraunT paul53P 2 Replies Last reply
                            0
                            • L Lieggie

                              Kann es vielleicht daran liegen das ich einen Rpi5 nutze mit Bookworm?
                              habe gerade gelesen das einige User probleme mit den GPIO in verbindung mit bookworm haben

                              Thomas BraunT Online
                              Thomas BraunT Online
                              Thomas Braun
                              Most Active
                              wrote on last edited by
                              #35

                              @lieggie

                              Die GPIOs werden nun anders angesprochen und Programme müssen dahingehend umgestellt werden.

                              Linux-Werkzeugkasten:
                              https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                              NodeJS Fixer Skript:
                              https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                              iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                              1 Reply Last reply
                              0
                              • L Lieggie

                                Kann es vielleicht daran liegen das ich einen Rpi5 nutze mit Bookworm?
                                habe gerade gelesen das einige User probleme mit den GPIO in verbindung mit bookworm haben

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by paul53
                                #36

                                @lieggie sagte: probleme mit den GPIO in verbindung mit bookworm haben

                                Das Python-Skript hat doch funktioniert: Einen String mit den Werten geliefert. Dann nimm das Python-Skript (ohne sudo) und zerlege den String.

                                Blockly_temp.JPG

                                Wenn du das Skript nach /opt/iobroker verschoben hast, dann ersetze "home" durch "opt".

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                L 1 Reply Last reply
                                0
                                • paul53P paul53

                                  @lieggie sagte: probleme mit den GPIO in verbindung mit bookworm haben

                                  Das Python-Skript hat doch funktioniert: Einen String mit den Werten geliefert. Dann nimm das Python-Skript (ohne sudo) und zerlege den String.

                                  Blockly_temp.JPG

                                  Wenn du das Skript nach /opt/iobroker verschoben hast, dann ersetze "home" durch "opt".

                                  L Offline
                                  L Offline
                                  Lieggie
                                  wrote on last edited by
                                  #37

                                  @paul53

                                  es geht nur so mit sudo -Spi4.JPG
                                  Es wir aber nichts zurückgegeben

                                  Gebe ich nur sudo ein kommt die Meldung

                                  script.js.Skript_1: sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required 
                                  

                                  ganz ohne sudo

                                  script.js.Skript_1: Traceback (most recent call last): File "/opt/iobroker/merged.py", line 50, in <module> with open(pidfile, 'w') as f: ^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied: '/run/X1200.pid'
                                  
                                  paul53P 1 Reply Last reply
                                  0
                                  • L Lieggie

                                    @paul53

                                    es geht nur so mit sudo -Spi4.JPG
                                    Es wir aber nichts zurückgegeben

                                    Gebe ich nur sudo ein kommt die Meldung

                                    script.js.Skript_1: sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required 
                                    

                                    ganz ohne sudo

                                    script.js.Skript_1: Traceback (most recent call last): File "/opt/iobroker/merged.py", line 50, in <module> with open(pidfile, 'w') as f: ^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied: '/run/X1200.pid'
                                    
                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by paul53
                                    #38

                                    @lieggie sagte: ganz ohne sudo

                                    Das Python-Skript wird abgearbeitet bis zur Zeile 50, wo es offenbar ein Problem mit Zugriffsrechten auf das Verzeichnis /run gibt.
                                    EDIT: Deshalb muss Python3 offenbar mit root-Rechten ausgeführt werden.

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                    1 Reply Last reply
                                    0
                                    • L Lieggie

                                      @homoran

                                      Sie lagen im home/pi habe sie nun mit
                                      sudo npm uninstall onoff
                                      wieder entfernt.

                                      ich sollte weiter mit blockly basteln das Script kram liegt mir nicht.

                                      OliverIOO Offline
                                      OliverIOO Offline
                                      OliverIO
                                      wrote on last edited by
                                      #39

                                      @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                                      ich sollte weiter mit blockly basteln das Script kram liegt mir nicht.

                                      Ok
                                      Evtl hilft das Skript ja jemanden anderen weiter

                                      Meine Adapter und Widgets
                                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                      Links im Profil

                                      L 1 Reply Last reply
                                      0
                                      • OliverIOO OliverIO

                                        @lieggie sagte in Geekworm X1202 USV Variable in IObroker übernehmen:

                                        ich sollte weiter mit blockly basteln das Script kram liegt mir nicht.

                                        Ok
                                        Evtl hilft das Skript ja jemanden anderen weiter

                                        L Offline
                                        L Offline
                                        Lieggie
                                        wrote on last edited by
                                        #40

                                        @oliverio

                                        ich versuche grad 2 gleisig zu fahren....ich komme weder mit blockly noch mit deinem Script weiter.

                                        Aus deine script bekomme ich diesen fehler

                                        javascript.0	14:59:52.402	info	Start JavaScript script.js.USV (Javascript/js)
                                        javascript.0	14:59:52.417	error	script.js.USV: Error: EINVAL: invalid argument, write
                                        javascript.0	14:59:52.417	error	at script.js.USV:26:18
                                        javascript.0	14:59:52.417	error	at script.js.USV:169:3
                                        

                                        komme damit auch nicht weiter

                                        OliverIOO 1 Reply Last reply
                                        0
                                        • L Lieggie

                                          @oliverio
                                          ich stehe auf dem schlauch ... gemacht habe ich nun 11.JPG

                                          Variable erstellt
                                          12.JPG

                                          Minutliche ausführung
                                          13.JPG

                                          nu komme ich nicht weiter weil mein merged.py so aussieht.
                                          wo soll ich deine Zeilen einfügen.

                                          #!/usr/bin/python3
                                          
                                          import os
                                          import struct
                                          import smbus
                                          import time
                                          import logging
                                          import subprocess
                                          import gpiod
                                          from subprocess import call
                                          
                                          # User-configurable variables
                                          SHUTDOWN_THRESHOLD = 3  # Number of consecutive failures required for shutdown
                                          SLEEP_TIME = 60  # Time in seconds to wait between failure checks
                                          Loop =  False
                                          
                                          def readVoltage(bus):
                                              read = bus.read_word_data(address, 2)
                                              swapped = struct.unpack("<H", struct.pack(">H", read))[0]
                                              voltage = swapped * 1.25 / 1000 / 16
                                              return voltage
                                          
                                          def readCapacity(bus):
                                              read = bus.read_word_data(address, 4)
                                              swapped = struct.unpack("<H", struct.pack(">H", read))[0]
                                              capacity = swapped / 256
                                              return capacity
                                          
                                          def get_battery_status(voltage):
                                              if 3.87 <= voltage <= 4.2:
                                                  return "Full"
                                              elif 3.7 <= voltage < 3.87:
                                                  return "High"
                                              elif 3.55 <= voltage < 3.7:
                                                  return "Medium"
                                              elif 3.4 <= voltage < 3.55:
                                                  return "Low"
                                              elif voltage < 3.4:
                                                  return "Critical"
                                              else:
                                                  return "Unknown"
                                          
                                          # Ensure only one instance of the script is running
                                          pid = str(os.getpid())
                                          pidfile = "/run/X1200.pid"
                                          if os.path.isfile(pidfile):
                                              print("Script already running")
                                              exit(1)
                                          else:
                                              with open(pidfile, 'w') as f:
                                                  f.write(pid)
                                          
                                          try:
                                              bus = smbus.SMBus(1)
                                              address = 0x36
                                              PLD_PIN = 6
                                              chip = gpiod.Chip('gpiochip4')
                                              pld_line = chip.get_line(PLD_PIN)
                                              pld_line.request(consumer="PLD", type=gpiod.LINE_REQ_DIR_IN)
                                          
                                              while True:
                                                  failure_counter = 0
                                          
                                                  for _ in range(SHUTDOWN_THRESHOLD):
                                                      ac_power_state = pld_line.get_value()
                                                      voltage = readVoltage(bus)
                                                      battery_status = get_battery_status(voltage)
                                                      capacity = readCapacity(bus)
                                                      print(f"Capacity: {capacity:.2f}% ({battery_status}), AC Power State: {'Plugged in' if ac_power_state == 1 else 'Unplugged'}, Voltage: {voltage:.2f}V")
                                                      if capacity < 20:
                                                          print("Battery level critical.")
                                                          failure_counter += 1
                                                      elif voltage < 3.20:
                                                          print("Battery voltage critical.")
                                                          failure_counter += 1
                                                      elif ac_power_state == 0:
                                                          print("UPS is unplugged or AC power loss detected.")
                                                          failure_counter += 1
                                                      else:
                                                          failure_counter = 0
                                                          break
                                          
                                                      if failure_counter < SHUTDOWN_THRESHOLD:
                                                          time.sleep(SLEEP_TIME) 
                                          
                                                  if failure_counter >= SHUTDOWN_THRESHOLD:
                                                      shutdown_reason = ""
                                                      if capacity < 20:
                                                          shutdown_reason = "due to critical battery level."
                                                      elif voltage < 3.20:
                                                          shutdown_reason = "due to critical battery voltage."
                                                      elif ac_power_state == 0:
                                                          shutdown_reason = "due to AC power loss or UPS unplugged."
                                          
                                                      shutdown_message = f"Critical condition met {shutdown_reason} Initiating shutdown."
                                                      print(shutdown_message)
                                                      call("sudo nohup shutdown -h now", shell=True)
                                                  else:
                                                      #print("System operating within normal parameters. No action required.")
                                                      if Loop:
                                                          time.sleep(SLEEP_TIME)
                                                      else:
                                                          exit(0)
                                          
                                          finally:
                                              if os.path.isfile(pidfile):
                                                  os.unlink(pidfile)
                                              exit(0)
                                          
                                          
                                          
                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          wrote on last edited by paul53
                                          #41

                                          @lieggie sagte: wo soll ich deine Zeilen einfügen.

                                          Damit es ohne sudo laufen kann, kommentiere die Zeilen 44 bis 51 und 106, 107 aus und teste es erst einmal auf der Konsole (ohne sudo).

                                          python3 /opt/iobroker/merged.py
                                          

                                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                          L 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          529

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe