Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Gelöst]Python prozess wird nach Zeit X mehrfach ausgeführt.

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    875

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[Gelöst]Python prozess wird nach Zeit X mehrfach ausgeführt.

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
13 Beiträge 3 Kommentatoren 899 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • wendy2702W Online
    wendy2702W Online
    wendy2702
    schrieb am zuletzt editiert von wendy2702
    #1

    Hi,

    um meinen Felicity Akku auslesen zu können läuft auf einem Pi3B mit Bookworm ein Python script welches ich in einem anderen Forum gefunden und angepasst habe.

    Das Script und die Abfrage funktioniert soweit und läuft als Service auf dem PI.

    mirko@felicity:~ $ systemctl status FelicityBMS.service
    ● FelicityBMS.service - hit service
         Loaded: loaded (/etc/systemd/system/FelicityBMS.service; enabled; preset: enabled)
         Active: active (running) since Wed 2025-02-26 17:27:24 CET; 4min 0s ago
       Main PID: 580 (python)
          Tasks: 2 (limit: 767)
            CPU: 1.824s
         CGroup: /system.slice/FelicityBMS.service
                 └─580 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
    
    Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
    
    

    Der Service scheint dauerhaft stabil zu laufen, seit letztem restart des PI's

    mirko@felicity:~ $ sudo journalctl -f -u FelicityBMS.service
    Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
    
    

    Das Script sieht so aus:

    mirko@felicity:~/felicityBMSscript $ cat BMSsnippet_iob_leon.py
    import logging
    import signal
    import sys
    import paho.mqtt.client as mqtt
    import datetime
    import time
    import os.path
    from FelicityBMSManager import FelicityBMSManager
    
    # Configure logging
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
    
    #DataItem = namedtuple("DataItem", ["key", "command", "data", "lastdata", "isdirty"])
    class DataItem:
    
       def __init__(self, command : str, clientid : int):
           self.command = command
           self.clientid = clientid
           self.data = None
           self.lastdata = None
    
    class MQTTBroker:
    
       def __init__(self, name: str, address : str, topic : str):
           self.name = name
           self.address = address
           self.topic = topic
           self.client = None
    
    
    ioBroker_broker = MQTTBroker('ioBroker', '192.168.178.18', 'felicity/battery')
    
    def on_connect(client, userdata, rc, *extra_params):
       print('ioBroker: Connected with result code ' + str(rc))
       client.subscribe(ioBroker_broker.topic + '/set/#')
       #client.publish(settings.MQTT_TOPIC + '', get_gpio_status(), 1)
    
    
    ioBroker_broker.client = mqtt.Client()
    isrunning = True
    
    def _handle_sigterm(sig, frame):
       logging.info("SIGTERM received. Exiting...")
       isrunning = False
       ioBroker_broker.client.loop_stop()
       exit()
    
    def getFormattedData(command, clientid):
       ws = FelicityBMSManager(command=command, clientid=clientid)
       data = ws.get_data()
    
       #if websocket_data != last_websocket_data:
    
       formatted_data = {}
    
       for inverter_key in data:
           inverter_item = data[inverter_key]
           value = inverter_item.value
    
           #if value == '--':
           #    value = '0'
    
           formatted_data[inverter_key] = {"name": inverter_item.name, "value": value, "unit": inverter_item.unit}
           #print(inverter_key, inverter_item.desc, value, inverter_item.unit)
    
       return formatted_data
    
    def sendData(broker, topic_key, data):
       broker.client.publish(broker.topic + topic_key, data)
       #print(broker.name, broker.address, broker.topic + topic_key, data)
    
    starttime = datetime.datetime.min
    resettime = datetime.datetime.min
    
    try:
       signal.signal(signal.SIGTERM, _handle_sigterm)
    
       ioBroker_broker.client.on_connect = on_connect
       #ioBroker_broker.client.on_message = on_message
       ioBroker_broker.client.username_pw_set("mqtt","ioBroker")
       ioBroker_broker.client.connect(ioBroker_broker.address, 1889, 60)
       ioBroker_broker.client.loop_start()
    
       starttime = datetime.datetime.min
    
       battery_information_list = [
           DataItem(command="GetBMSBatteryInformation", clientid = 1),
           DataItem(command="GetBMSBatteryInformation", clientid = 2),
           DataItem(command="GetBMSBatteryInformation", clientid = 3),
           DataItem(command="GetBMSBatteryInformation", clientid = 4)
       ]
    
       cell_information_list = [DataItem(command="GetBMSCellInformation", clientid = battery_information.clientid) for battery_information in battery_information_list]
    
       while isrunning:
           if datetime.datetime.now() > starttime + datetime.timedelta(seconds = 10): #org 10
               try:
                   isDirtyDefault = False
    
                   if datetime.datetime.now() > resettime + datetime.timedelta(seconds = 60): #org 60
                       isDirtyDefault = True
                       resettime = datetime.datetime.now()
    
                   for battery_index, battery_information in enumerate(battery_information_list):
                       battery_information.lastdata = battery_information.data
    
                       battery_information.data = getFormattedData(command =  battery_information.command, clientid = battery_information.clientid)
                       time.sleep(1)
    
                       if isDirtyDefault or battery_information.lastdata != battery_information.data:
                           battery_voltage = battery_information.data["BatteryVoltage"]["value"]
                           battery_current = battery_information.data["BatteryCurrent"]["value"]
                           battery_power = battery_voltage * battery_current * -1 # positiv Ladung, negativ Entladung
                           battery_soc = battery_information.data["SOC"]["value"]
    
                           sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_voltage', battery_voltage)
                           sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_current', battery_current)
                           sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_power', round(battery_power, 1))
                           sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/soc', battery_soc)
    
                       cell_information = cell_information_list[battery_index]
                       cell_information.lastdata = cell_information.data
                       cell_information.data = getFormattedData(command = cell_information.command, clientid = cell_information.clientid)
                       time.sleep(1)
    
                       if isDirtyDefault or cell_information.lastdata != cell_information.data:
                           for cell_index in range(1, 17):
                               cell_voltage = cell_information.data["Cell" + str(cell_index) + " Voltage"]["value"]
                               sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/cell_' + str(cell_index) + '_voltage', cell_voltage)
    
               except Exception as e:
                   exc_type, exc_obj, exc_tb = sys.exc_info()
                   fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
                   logging.exception("Caught exception")
                   print(exc_type, fname, exc_tb.tb_lineno)
                   pass
    
               starttime = datetime.datetime.now()
    
           time.sleep(1)
    
    #except KeyboardInterrupt:
    #    GPIO.cleanup()
    #    dmx_stop()
    finally:
       print("cleanup")
    
    mirko@felicity:~/felicityBMSscript $
    
    

    Der Service ist so eingerichtet:

    mirko@felicity:/etc/systemd/system $ cat FelicityBMS.service
    [Unit]
    Description=hit service
    After=network-online.target
    
    [Service]
    ExecStart=/usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
    
    [Install]
    WantedBy=multi-user.target
    mirko@felicity:/etc/systemd/system $
    
    

    Jemand ne Idee was die Ursache sein kann das ich irgendwann x Python Prozesse aktiv habe und die Abfrage dann nicht mehr funktioniert?

    Thx

    Bitte keine Fragen per PN, die gehören ins Forum!

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

    BananaJoeB Thomas BraunT 3 Antworten Letzte Antwort
    0
    • wendy2702W wendy2702

      Hi,

      um meinen Felicity Akku auslesen zu können läuft auf einem Pi3B mit Bookworm ein Python script welches ich in einem anderen Forum gefunden und angepasst habe.

      Das Script und die Abfrage funktioniert soweit und läuft als Service auf dem PI.

      mirko@felicity:~ $ systemctl status FelicityBMS.service
      ● FelicityBMS.service - hit service
           Loaded: loaded (/etc/systemd/system/FelicityBMS.service; enabled; preset: enabled)
           Active: active (running) since Wed 2025-02-26 17:27:24 CET; 4min 0s ago
         Main PID: 580 (python)
            Tasks: 2 (limit: 767)
              CPU: 1.824s
           CGroup: /system.slice/FelicityBMS.service
                   └─580 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
      
      Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
      
      

      Der Service scheint dauerhaft stabil zu laufen, seit letztem restart des PI's

      mirko@felicity:~ $ sudo journalctl -f -u FelicityBMS.service
      Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
      
      

      Das Script sieht so aus:

      mirko@felicity:~/felicityBMSscript $ cat BMSsnippet_iob_leon.py
      import logging
      import signal
      import sys
      import paho.mqtt.client as mqtt
      import datetime
      import time
      import os.path
      from FelicityBMSManager import FelicityBMSManager
      
      # Configure logging
      logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
      
      #DataItem = namedtuple("DataItem", ["key", "command", "data", "lastdata", "isdirty"])
      class DataItem:
      
         def __init__(self, command : str, clientid : int):
             self.command = command
             self.clientid = clientid
             self.data = None
             self.lastdata = None
      
      class MQTTBroker:
      
         def __init__(self, name: str, address : str, topic : str):
             self.name = name
             self.address = address
             self.topic = topic
             self.client = None
      
      
      ioBroker_broker = MQTTBroker('ioBroker', '192.168.178.18', 'felicity/battery')
      
      def on_connect(client, userdata, rc, *extra_params):
         print('ioBroker: Connected with result code ' + str(rc))
         client.subscribe(ioBroker_broker.topic + '/set/#')
         #client.publish(settings.MQTT_TOPIC + '', get_gpio_status(), 1)
      
      
      ioBroker_broker.client = mqtt.Client()
      isrunning = True
      
      def _handle_sigterm(sig, frame):
         logging.info("SIGTERM received. Exiting...")
         isrunning = False
         ioBroker_broker.client.loop_stop()
         exit()
      
      def getFormattedData(command, clientid):
         ws = FelicityBMSManager(command=command, clientid=clientid)
         data = ws.get_data()
      
         #if websocket_data != last_websocket_data:
      
         formatted_data = {}
      
         for inverter_key in data:
             inverter_item = data[inverter_key]
             value = inverter_item.value
      
             #if value == '--':
             #    value = '0'
      
             formatted_data[inverter_key] = {"name": inverter_item.name, "value": value, "unit": inverter_item.unit}
             #print(inverter_key, inverter_item.desc, value, inverter_item.unit)
      
         return formatted_data
      
      def sendData(broker, topic_key, data):
         broker.client.publish(broker.topic + topic_key, data)
         #print(broker.name, broker.address, broker.topic + topic_key, data)
      
      starttime = datetime.datetime.min
      resettime = datetime.datetime.min
      
      try:
         signal.signal(signal.SIGTERM, _handle_sigterm)
      
         ioBroker_broker.client.on_connect = on_connect
         #ioBroker_broker.client.on_message = on_message
         ioBroker_broker.client.username_pw_set("mqtt","ioBroker")
         ioBroker_broker.client.connect(ioBroker_broker.address, 1889, 60)
         ioBroker_broker.client.loop_start()
      
         starttime = datetime.datetime.min
      
         battery_information_list = [
             DataItem(command="GetBMSBatteryInformation", clientid = 1),
             DataItem(command="GetBMSBatteryInformation", clientid = 2),
             DataItem(command="GetBMSBatteryInformation", clientid = 3),
             DataItem(command="GetBMSBatteryInformation", clientid = 4)
         ]
      
         cell_information_list = [DataItem(command="GetBMSCellInformation", clientid = battery_information.clientid) for battery_information in battery_information_list]
      
         while isrunning:
             if datetime.datetime.now() > starttime + datetime.timedelta(seconds = 10): #org 10
                 try:
                     isDirtyDefault = False
      
                     if datetime.datetime.now() > resettime + datetime.timedelta(seconds = 60): #org 60
                         isDirtyDefault = True
                         resettime = datetime.datetime.now()
      
                     for battery_index, battery_information in enumerate(battery_information_list):
                         battery_information.lastdata = battery_information.data
      
                         battery_information.data = getFormattedData(command =  battery_information.command, clientid = battery_information.clientid)
                         time.sleep(1)
      
                         if isDirtyDefault or battery_information.lastdata != battery_information.data:
                             battery_voltage = battery_information.data["BatteryVoltage"]["value"]
                             battery_current = battery_information.data["BatteryCurrent"]["value"]
                             battery_power = battery_voltage * battery_current * -1 # positiv Ladung, negativ Entladung
                             battery_soc = battery_information.data["SOC"]["value"]
      
                             sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_voltage', battery_voltage)
                             sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_current', battery_current)
                             sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_power', round(battery_power, 1))
                             sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/soc', battery_soc)
      
                         cell_information = cell_information_list[battery_index]
                         cell_information.lastdata = cell_information.data
                         cell_information.data = getFormattedData(command = cell_information.command, clientid = cell_information.clientid)
                         time.sleep(1)
      
                         if isDirtyDefault or cell_information.lastdata != cell_information.data:
                             for cell_index in range(1, 17):
                                 cell_voltage = cell_information.data["Cell" + str(cell_index) + " Voltage"]["value"]
                                 sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/cell_' + str(cell_index) + '_voltage', cell_voltage)
      
                 except Exception as e:
                     exc_type, exc_obj, exc_tb = sys.exc_info()
                     fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
                     logging.exception("Caught exception")
                     print(exc_type, fname, exc_tb.tb_lineno)
                     pass
      
                 starttime = datetime.datetime.now()
      
             time.sleep(1)
      
      #except KeyboardInterrupt:
      #    GPIO.cleanup()
      #    dmx_stop()
      finally:
         print("cleanup")
      
      mirko@felicity:~/felicityBMSscript $
      
      

      Der Service ist so eingerichtet:

      mirko@felicity:/etc/systemd/system $ cat FelicityBMS.service
      [Unit]
      Description=hit service
      After=network-online.target
      
      [Service]
      ExecStart=/usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
      
      [Install]
      WantedBy=multi-user.target
      mirko@felicity:/etc/systemd/system $
      
      

      Jemand ne Idee was die Ursache sein kann das ich irgendwann x Python Prozesse aktiv habe und die Abfrage dann nicht mehr funktioniert?

      Thx

      BananaJoeB Online
      BananaJoeB Online
      BananaJoe
      Most Active
      schrieb am zuletzt editiert von BananaJoe
      #2

      @wendy2702 sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:

      FelicityBMS.service

      kannst auch mal den Inhalt der FelicityBMS.service posten? ok stand ganz unten

      Ich habe auch diverse Python-Skripte als Dienst laufen, bei mir sieht die Service-Datei so aus:

      [Unit]
      Description=Zabbix Sender URL Service
      After=syslog.target
      
      [Service]
      Type=simple
      WorkingDirectory=/gpio/flask
      ExecStart=/gpio/flask/ZabbixSenderByURL.py
      SyslogIdentifier=zabbixsenderbyurl
      StandardOutput=syslog
      StandardError=syslog
      Restart=always
      RestartSec=3
      
      [Install]
      WantedBy=multi-user.target
      

      type=simple hast du nicht angegeben, sollte aber auch der Default wert sein.
      Mein Python-Skript ist ausführbar ( chmod +x ... ) weshalb ich den Interpreter nicht extra mit angeben muss.
      After=network-online.target sollte auch ok sein.

      Im Skript sehe ich auf anhieb auch nicht was einen mehrfachen Start auslösen sollte.

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

      wendy2702W 1 Antwort Letzte Antwort
      0
      • wendy2702W wendy2702

        Hi,

        um meinen Felicity Akku auslesen zu können läuft auf einem Pi3B mit Bookworm ein Python script welches ich in einem anderen Forum gefunden und angepasst habe.

        Das Script und die Abfrage funktioniert soweit und läuft als Service auf dem PI.

        mirko@felicity:~ $ systemctl status FelicityBMS.service
        ● FelicityBMS.service - hit service
             Loaded: loaded (/etc/systemd/system/FelicityBMS.service; enabled; preset: enabled)
             Active: active (running) since Wed 2025-02-26 17:27:24 CET; 4min 0s ago
           Main PID: 580 (python)
              Tasks: 2 (limit: 767)
                CPU: 1.824s
             CGroup: /system.slice/FelicityBMS.service
                     └─580 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
        
        Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
        
        

        Der Service scheint dauerhaft stabil zu laufen, seit letztem restart des PI's

        mirko@felicity:~ $ sudo journalctl -f -u FelicityBMS.service
        Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
        
        

        Das Script sieht so aus:

        mirko@felicity:~/felicityBMSscript $ cat BMSsnippet_iob_leon.py
        import logging
        import signal
        import sys
        import paho.mqtt.client as mqtt
        import datetime
        import time
        import os.path
        from FelicityBMSManager import FelicityBMSManager
        
        # Configure logging
        logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
        
        #DataItem = namedtuple("DataItem", ["key", "command", "data", "lastdata", "isdirty"])
        class DataItem:
        
           def __init__(self, command : str, clientid : int):
               self.command = command
               self.clientid = clientid
               self.data = None
               self.lastdata = None
        
        class MQTTBroker:
        
           def __init__(self, name: str, address : str, topic : str):
               self.name = name
               self.address = address
               self.topic = topic
               self.client = None
        
        
        ioBroker_broker = MQTTBroker('ioBroker', '192.168.178.18', 'felicity/battery')
        
        def on_connect(client, userdata, rc, *extra_params):
           print('ioBroker: Connected with result code ' + str(rc))
           client.subscribe(ioBroker_broker.topic + '/set/#')
           #client.publish(settings.MQTT_TOPIC + '', get_gpio_status(), 1)
        
        
        ioBroker_broker.client = mqtt.Client()
        isrunning = True
        
        def _handle_sigterm(sig, frame):
           logging.info("SIGTERM received. Exiting...")
           isrunning = False
           ioBroker_broker.client.loop_stop()
           exit()
        
        def getFormattedData(command, clientid):
           ws = FelicityBMSManager(command=command, clientid=clientid)
           data = ws.get_data()
        
           #if websocket_data != last_websocket_data:
        
           formatted_data = {}
        
           for inverter_key in data:
               inverter_item = data[inverter_key]
               value = inverter_item.value
        
               #if value == '--':
               #    value = '0'
        
               formatted_data[inverter_key] = {"name": inverter_item.name, "value": value, "unit": inverter_item.unit}
               #print(inverter_key, inverter_item.desc, value, inverter_item.unit)
        
           return formatted_data
        
        def sendData(broker, topic_key, data):
           broker.client.publish(broker.topic + topic_key, data)
           #print(broker.name, broker.address, broker.topic + topic_key, data)
        
        starttime = datetime.datetime.min
        resettime = datetime.datetime.min
        
        try:
           signal.signal(signal.SIGTERM, _handle_sigterm)
        
           ioBroker_broker.client.on_connect = on_connect
           #ioBroker_broker.client.on_message = on_message
           ioBroker_broker.client.username_pw_set("mqtt","ioBroker")
           ioBroker_broker.client.connect(ioBroker_broker.address, 1889, 60)
           ioBroker_broker.client.loop_start()
        
           starttime = datetime.datetime.min
        
           battery_information_list = [
               DataItem(command="GetBMSBatteryInformation", clientid = 1),
               DataItem(command="GetBMSBatteryInformation", clientid = 2),
               DataItem(command="GetBMSBatteryInformation", clientid = 3),
               DataItem(command="GetBMSBatteryInformation", clientid = 4)
           ]
        
           cell_information_list = [DataItem(command="GetBMSCellInformation", clientid = battery_information.clientid) for battery_information in battery_information_list]
        
           while isrunning:
               if datetime.datetime.now() > starttime + datetime.timedelta(seconds = 10): #org 10
                   try:
                       isDirtyDefault = False
        
                       if datetime.datetime.now() > resettime + datetime.timedelta(seconds = 60): #org 60
                           isDirtyDefault = True
                           resettime = datetime.datetime.now()
        
                       for battery_index, battery_information in enumerate(battery_information_list):
                           battery_information.lastdata = battery_information.data
        
                           battery_information.data = getFormattedData(command =  battery_information.command, clientid = battery_information.clientid)
                           time.sleep(1)
        
                           if isDirtyDefault or battery_information.lastdata != battery_information.data:
                               battery_voltage = battery_information.data["BatteryVoltage"]["value"]
                               battery_current = battery_information.data["BatteryCurrent"]["value"]
                               battery_power = battery_voltage * battery_current * -1 # positiv Ladung, negativ Entladung
                               battery_soc = battery_information.data["SOC"]["value"]
        
                               sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_voltage', battery_voltage)
                               sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_current', battery_current)
                               sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_power', round(battery_power, 1))
                               sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/soc', battery_soc)
        
                           cell_information = cell_information_list[battery_index]
                           cell_information.lastdata = cell_information.data
                           cell_information.data = getFormattedData(command = cell_information.command, clientid = cell_information.clientid)
                           time.sleep(1)
        
                           if isDirtyDefault or cell_information.lastdata != cell_information.data:
                               for cell_index in range(1, 17):
                                   cell_voltage = cell_information.data["Cell" + str(cell_index) + " Voltage"]["value"]
                                   sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/cell_' + str(cell_index) + '_voltage', cell_voltage)
        
                   except Exception as e:
                       exc_type, exc_obj, exc_tb = sys.exc_info()
                       fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
                       logging.exception("Caught exception")
                       print(exc_type, fname, exc_tb.tb_lineno)
                       pass
        
                   starttime = datetime.datetime.now()
        
               time.sleep(1)
        
        #except KeyboardInterrupt:
        #    GPIO.cleanup()
        #    dmx_stop()
        finally:
           print("cleanup")
        
        mirko@felicity:~/felicityBMSscript $
        
        

        Der Service ist so eingerichtet:

        mirko@felicity:/etc/systemd/system $ cat FelicityBMS.service
        [Unit]
        Description=hit service
        After=network-online.target
        
        [Service]
        ExecStart=/usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
        
        [Install]
        WantedBy=multi-user.target
        mirko@felicity:/etc/systemd/system $
        
        

        Jemand ne Idee was die Ursache sein kann das ich irgendwann x Python Prozesse aktiv habe und die Abfrage dann nicht mehr funktioniert?

        Thx

        Thomas BraunT Online
        Thomas BraunT Online
        Thomas Braun
        Most Active
        schrieb am zuletzt editiert von
        #3

        @wendy2702

        So aus dem Stehgreif würde ich behaupten, das hängt mit der fehlenden Angabe zum Restart zusammen.

        Setzt das mal auf always.

        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

        wendy2702W 1 Antwort Letzte Antwort
        0
        • BananaJoeB BananaJoe

          @wendy2702 sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:

          FelicityBMS.service

          kannst auch mal den Inhalt der FelicityBMS.service posten? ok stand ganz unten

          Ich habe auch diverse Python-Skripte als Dienst laufen, bei mir sieht die Service-Datei so aus:

          [Unit]
          Description=Zabbix Sender URL Service
          After=syslog.target
          
          [Service]
          Type=simple
          WorkingDirectory=/gpio/flask
          ExecStart=/gpio/flask/ZabbixSenderByURL.py
          SyslogIdentifier=zabbixsenderbyurl
          StandardOutput=syslog
          StandardError=syslog
          Restart=always
          RestartSec=3
          
          [Install]
          WantedBy=multi-user.target
          

          type=simple hast du nicht angegeben, sollte aber auch der Default wert sein.
          Mein Python-Skript ist ausführbar ( chmod +x ... ) weshalb ich den Interpreter nicht extra mit angeben muss.
          After=network-online.target sollte auch ok sein.

          Im Skript sehe ich auf anhieb auch nicht was einen mehrfachen Start auslösen sollte.

          wendy2702W Online
          wendy2702W Online
          wendy2702
          schrieb am zuletzt editiert von
          #4

          @bananajoe hi und danke für deine Info.

          Ich passe den Service mal an und beobachte.

          Kann aber erst am Wochenende schauen da ich jetzt unterwegs bin.

          Bitte keine Fragen per PN, die gehören ins Forum!

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

          1 Antwort Letzte Antwort
          0
          • wendy2702W wendy2702

            Hi,

            um meinen Felicity Akku auslesen zu können läuft auf einem Pi3B mit Bookworm ein Python script welches ich in einem anderen Forum gefunden und angepasst habe.

            Das Script und die Abfrage funktioniert soweit und läuft als Service auf dem PI.

            mirko@felicity:~ $ systemctl status FelicityBMS.service
            ● FelicityBMS.service - hit service
                 Loaded: loaded (/etc/systemd/system/FelicityBMS.service; enabled; preset: enabled)
                 Active: active (running) since Wed 2025-02-26 17:27:24 CET; 4min 0s ago
               Main PID: 580 (python)
                  Tasks: 2 (limit: 767)
                    CPU: 1.824s
                 CGroup: /system.slice/FelicityBMS.service
                         └─580 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
            
            Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
            
            

            Der Service scheint dauerhaft stabil zu laufen, seit letztem restart des PI's

            mirko@felicity:~ $ sudo journalctl -f -u FelicityBMS.service
            Feb 26 17:27:24 felicity systemd[1]: Started FelicityBMS.service - hit service.
            
            

            Das Script sieht so aus:

            mirko@felicity:~/felicityBMSscript $ cat BMSsnippet_iob_leon.py
            import logging
            import signal
            import sys
            import paho.mqtt.client as mqtt
            import datetime
            import time
            import os.path
            from FelicityBMSManager import FelicityBMSManager
            
            # Configure logging
            logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
            
            #DataItem = namedtuple("DataItem", ["key", "command", "data", "lastdata", "isdirty"])
            class DataItem:
            
               def __init__(self, command : str, clientid : int):
                   self.command = command
                   self.clientid = clientid
                   self.data = None
                   self.lastdata = None
            
            class MQTTBroker:
            
               def __init__(self, name: str, address : str, topic : str):
                   self.name = name
                   self.address = address
                   self.topic = topic
                   self.client = None
            
            
            ioBroker_broker = MQTTBroker('ioBroker', '192.168.178.18', 'felicity/battery')
            
            def on_connect(client, userdata, rc, *extra_params):
               print('ioBroker: Connected with result code ' + str(rc))
               client.subscribe(ioBroker_broker.topic + '/set/#')
               #client.publish(settings.MQTT_TOPIC + '', get_gpio_status(), 1)
            
            
            ioBroker_broker.client = mqtt.Client()
            isrunning = True
            
            def _handle_sigterm(sig, frame):
               logging.info("SIGTERM received. Exiting...")
               isrunning = False
               ioBroker_broker.client.loop_stop()
               exit()
            
            def getFormattedData(command, clientid):
               ws = FelicityBMSManager(command=command, clientid=clientid)
               data = ws.get_data()
            
               #if websocket_data != last_websocket_data:
            
               formatted_data = {}
            
               for inverter_key in data:
                   inverter_item = data[inverter_key]
                   value = inverter_item.value
            
                   #if value == '--':
                   #    value = '0'
            
                   formatted_data[inverter_key] = {"name": inverter_item.name, "value": value, "unit": inverter_item.unit}
                   #print(inverter_key, inverter_item.desc, value, inverter_item.unit)
            
               return formatted_data
            
            def sendData(broker, topic_key, data):
               broker.client.publish(broker.topic + topic_key, data)
               #print(broker.name, broker.address, broker.topic + topic_key, data)
            
            starttime = datetime.datetime.min
            resettime = datetime.datetime.min
            
            try:
               signal.signal(signal.SIGTERM, _handle_sigterm)
            
               ioBroker_broker.client.on_connect = on_connect
               #ioBroker_broker.client.on_message = on_message
               ioBroker_broker.client.username_pw_set("mqtt","ioBroker")
               ioBroker_broker.client.connect(ioBroker_broker.address, 1889, 60)
               ioBroker_broker.client.loop_start()
            
               starttime = datetime.datetime.min
            
               battery_information_list = [
                   DataItem(command="GetBMSBatteryInformation", clientid = 1),
                   DataItem(command="GetBMSBatteryInformation", clientid = 2),
                   DataItem(command="GetBMSBatteryInformation", clientid = 3),
                   DataItem(command="GetBMSBatteryInformation", clientid = 4)
               ]
            
               cell_information_list = [DataItem(command="GetBMSCellInformation", clientid = battery_information.clientid) for battery_information in battery_information_list]
            
               while isrunning:
                   if datetime.datetime.now() > starttime + datetime.timedelta(seconds = 10): #org 10
                       try:
                           isDirtyDefault = False
            
                           if datetime.datetime.now() > resettime + datetime.timedelta(seconds = 60): #org 60
                               isDirtyDefault = True
                               resettime = datetime.datetime.now()
            
                           for battery_index, battery_information in enumerate(battery_information_list):
                               battery_information.lastdata = battery_information.data
            
                               battery_information.data = getFormattedData(command =  battery_information.command, clientid = battery_information.clientid)
                               time.sleep(1)
            
                               if isDirtyDefault or battery_information.lastdata != battery_information.data:
                                   battery_voltage = battery_information.data["BatteryVoltage"]["value"]
                                   battery_current = battery_information.data["BatteryCurrent"]["value"]
                                   battery_power = battery_voltage * battery_current * -1 # positiv Ladung, negativ Entladung
                                   battery_soc = battery_information.data["SOC"]["value"]
            
                                   sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_voltage', battery_voltage)
                                   sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_current', battery_current)
                                   sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/battery_power', round(battery_power, 1))
                                   sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/soc', battery_soc)
            
                               cell_information = cell_information_list[battery_index]
                               cell_information.lastdata = cell_information.data
                               cell_information.data = getFormattedData(command = cell_information.command, clientid = cell_information.clientid)
                               time.sleep(1)
            
                               if isDirtyDefault or cell_information.lastdata != cell_information.data:
                                   for cell_index in range(1, 17):
                                       cell_voltage = cell_information.data["Cell" + str(cell_index) + " Voltage"]["value"]
                                       sendData(ioBroker_broker, '/' + str(battery_information.clientid) + '/cell_' + str(cell_index) + '_voltage', cell_voltage)
            
                       except Exception as e:
                           exc_type, exc_obj, exc_tb = sys.exc_info()
                           fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
                           logging.exception("Caught exception")
                           print(exc_type, fname, exc_tb.tb_lineno)
                           pass
            
                       starttime = datetime.datetime.now()
            
                   time.sleep(1)
            
            #except KeyboardInterrupt:
            #    GPIO.cleanup()
            #    dmx_stop()
            finally:
               print("cleanup")
            
            mirko@felicity:~/felicityBMSscript $
            
            

            Der Service ist so eingerichtet:

            mirko@felicity:/etc/systemd/system $ cat FelicityBMS.service
            [Unit]
            Description=hit service
            After=network-online.target
            
            [Service]
            ExecStart=/usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
            
            [Install]
            WantedBy=multi-user.target
            mirko@felicity:/etc/systemd/system $
            
            

            Jemand ne Idee was die Ursache sein kann das ich irgendwann x Python Prozesse aktiv habe und die Abfrage dann nicht mehr funktioniert?

            Thx

            BananaJoeB Online
            BananaJoeB Online
            BananaJoe
            Most Active
            schrieb am zuletzt editiert von
            #5

            @wendy2702 was beim Skript so beim mehrmaligen anschauen blöd sein könnte, ist das es beim Start eine MQTT Verbindung zum MQTT Broker aufbaut (Zeile 79 bis 83).
            Erhält das Skript den Stopp-Befehl, so wird die Verbindung wieder abgebaut.
            Ich sehe nichts was die Verbindung zur Laufzeit prüft, danach wird in der Hauptschleife nur noch gesendet.
            Ob das wirklich ein Problem ist, weis ich aber nicht (oder ob der paho.mqtt.client das händelt).

            ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

            wendy2702W 1 Antwort Letzte Antwort
            0
            • Thomas BraunT Thomas Braun

              @wendy2702

              So aus dem Stehgreif würde ich behaupten, das hängt mit der fehlenden Angabe zum Restart zusammen.

              Setzt das mal auf always.

              wendy2702W Online
              wendy2702W Online
              wendy2702
              schrieb am zuletzt editiert von
              #6

              @thomas-braun sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:

              @wendy2702

              So aus dem Stehgreif würde ich behaupten, das hängt mit der fehlenden Angabe zum Restart zusammen.

              Setzt das mal auf always.

              Ok.

              Das hat @BananaJoe ja auch drin stehen.

              Mal meinen Sohn antriggern ob der das schnell ändern kann.

              Bitte keine Fragen per PN, die gehören ins Forum!

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

              1 Antwort Letzte Antwort
              0
              • BananaJoeB BananaJoe

                @wendy2702 was beim Skript so beim mehrmaligen anschauen blöd sein könnte, ist das es beim Start eine MQTT Verbindung zum MQTT Broker aufbaut (Zeile 79 bis 83).
                Erhält das Skript den Stopp-Befehl, so wird die Verbindung wieder abgebaut.
                Ich sehe nichts was die Verbindung zur Laufzeit prüft, danach wird in der Hauptschleife nur noch gesendet.
                Ob das wirklich ein Problem ist, weis ich aber nicht (oder ob der paho.mqtt.client das händelt).

                wendy2702W Online
                wendy2702W Online
                wendy2702
                schrieb am zuletzt editiert von
                #7

                @bananajoe sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:

                @wendy2702 was beim Skript so beim mehrmaligen anschauen blöd sein könnte, ist das es beim Start eine MQTT Verbindung zum MQTT Broker aufbaut (Zeile 79 bis 83).
                Erhält das Skript den Stopp-Befehl, so wird die Verbindung wieder abgebaut.
                Ich sehe nichts was die Verbindung zur Laufzeit prüft, danach wird in der Hauptschleife nur noch gesendet.
                Ob das wirklich ein Problem ist, weis ich aber nicht (oder ob der paho.mqtt.client das händelt).

                Das habe ich dank KI auch erfahren aber kann mir nicht vorstellen das es zu mehreren Prozessen führen kann.

                Bin aber auch kein Informatiker etc.

                Bitte keine Fragen per PN, die gehören ins Forum!

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

                1 Antwort Letzte Antwort
                0
                • wendy2702W Online
                  wendy2702W Online
                  wendy2702
                  schrieb am zuletzt editiert von
                  #8

                  So,

                  Hatte vor einigen Tagen den Service geändert:

                  
                  Unit]
                  Description=Felicity Abfrage  service
                  After=network-online.target
                  
                  [Service]
                  Type=simple
                  ExecStart=/usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                  SyslogIdentifier=felictyabfrage
                  StandardOutput=syslog
                  StandardError=syslog
                  Restart=always
                  
                  [Install]
                  WantedBy=multi-user.target
                  
                  
                  

                  Heute läuft der Python Prozeß wieder mehrfach.

                  Sieht hier noch wer einen Fehler oder hat einen anderen Tipp?

                  Bitte keine Fragen per PN, die gehören ins Forum!

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

                  BananaJoeB 1 Antwort Letzte Antwort
                  0
                  • wendy2702W wendy2702

                    So,

                    Hatte vor einigen Tagen den Service geändert:

                    
                    Unit]
                    Description=Felicity Abfrage  service
                    After=network-online.target
                    
                    [Service]
                    Type=simple
                    ExecStart=/usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                    SyslogIdentifier=felictyabfrage
                    StandardOutput=syslog
                    StandardError=syslog
                    Restart=always
                    
                    [Install]
                    WantedBy=multi-user.target
                    
                    
                    

                    Heute läuft der Python Prozeß wieder mehrfach.

                    Sieht hier noch wer einen Fehler oder hat einen anderen Tipp?

                    BananaJoeB Online
                    BananaJoeB Online
                    BananaJoe
                    Most Active
                    schrieb am zuletzt editiert von BananaJoe
                    #9

                    @wendy2702 kannst du mal ein

                    /usr/bin/python --version
                    

                    aufrufen? Und ich hoffe da kommt nicht 2.7 ...

                    Und wenn der wieder "mehrfach" läuft, gib bitte diesen Befehl ein und poste hier die Ausgabe:

                    ps -aux |grep python
                    

                    und beim Service hänge unter das Restart dann auch noch diese Zeile:

                    RestartSec=30
                    

                    damit er ein wenig Pause macht vor einem Neustart.

                    Ich war schon drauf und dran das Skript anzupassen - aber ich könnte es bei mir ja nicht testen.
                    Blöd ist, das das Skript ja nicht wirklich auf Start/Stop-Anforderungen reagiert.

                    Hier hat jemand eine schöne Idee dafür vorgeschlagen: https://oxylabs.io/blog/python-script-service-guide
                    Bei der Lösung reagiert das Skript selbst auf die Anforderungen.
                    Meine Python-Dienste nutzen alle Flask, ich vermute das hat das schon eingebaut.

                    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                    wendy2702W 1 Antwort Letzte Antwort
                    0
                    • BananaJoeB BananaJoe

                      @wendy2702 kannst du mal ein

                      /usr/bin/python --version
                      

                      aufrufen? Und ich hoffe da kommt nicht 2.7 ...

                      Und wenn der wieder "mehrfach" läuft, gib bitte diesen Befehl ein und poste hier die Ausgabe:

                      ps -aux |grep python
                      

                      und beim Service hänge unter das Restart dann auch noch diese Zeile:

                      RestartSec=30
                      

                      damit er ein wenig Pause macht vor einem Neustart.

                      Ich war schon drauf und dran das Skript anzupassen - aber ich könnte es bei mir ja nicht testen.
                      Blöd ist, das das Skript ja nicht wirklich auf Start/Stop-Anforderungen reagiert.

                      Hier hat jemand eine schöne Idee dafür vorgeschlagen: https://oxylabs.io/blog/python-script-service-guide
                      Bei der Lösung reagiert das Skript selbst auf die Anforderungen.
                      Meine Python-Dienste nutzen alle Flask, ich vermute das hat das schon eingebaut.

                      wendy2702W Online
                      wendy2702W Online
                      wendy2702
                      schrieb am zuletzt editiert von
                      #10

                      @bananajoe Die Python Version ist:

                      Python 3.11.2
                      

                      Service werde ich erweitern und mir den Link mal anschauen.

                      Danke!

                      Bitte keine Fragen per PN, die gehören ins Forum!

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

                      1 Antwort Letzte Antwort
                      0
                      • wendy2702W Online
                        wendy2702W Online
                        wendy2702
                        schrieb am zuletzt editiert von
                        #11

                        @bananajoe sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:

                        ps -aux |grep python

                        Jetzt dachte ich nach einfügen der Restart Zeit würde es funktionieren aber dann sehe ich heute wieder mehrere Prozesse.

                        @BananaJoe hier mal die gewünschte Ausgabe

                        mirko@felicity:~ $ ps -aux |grep python
                        root        1833  0.5  2.7 109996 25984 ?        Ssl  Mar04  31:55 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       2482  0.0  0.1   2320  1280 ?        Ss   Mar04   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       2483  0.5  2.7 109996 25996 ?        Sl   Mar04  28:54 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       4229  0.0  0.1   2320  1280 ?        Ss   Mar05   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       4230  0.4  2.6 109020 25044 ?        Sl   Mar05  20:35 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       5979  0.0  0.1   2320  1280 ?        Ss   Mar06   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       5980  0.4  2.6 108996 25032 ?        Sl   Mar06  12:39 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       7714  0.0  0.1   2320  1280 ?        Ss   Mar07   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       7715  0.4  2.6 108996 24892 ?        Sl   Mar07   5:21 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                        mirko       9345  0.0  0.2   6088  1920 pts/0    S+   14:53   0:00 grep --color=auto python
                        
                        

                        Bitte keine Fragen per PN, die gehören ins Forum!

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

                        BananaJoeB 1 Antwort Letzte Antwort
                        0
                        • wendy2702W wendy2702

                          @bananajoe sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:

                          ps -aux |grep python

                          Jetzt dachte ich nach einfügen der Restart Zeit würde es funktionieren aber dann sehe ich heute wieder mehrere Prozesse.

                          @BananaJoe hier mal die gewünschte Ausgabe

                          mirko@felicity:~ $ ps -aux |grep python
                          root        1833  0.5  2.7 109996 25984 ?        Ssl  Mar04  31:55 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       2482  0.0  0.1   2320  1280 ?        Ss   Mar04   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       2483  0.5  2.7 109996 25996 ?        Sl   Mar04  28:54 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       4229  0.0  0.1   2320  1280 ?        Ss   Mar05   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       4230  0.4  2.6 109020 25044 ?        Sl   Mar05  20:35 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       5979  0.0  0.1   2320  1280 ?        Ss   Mar06   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       5980  0.4  2.6 108996 25032 ?        Sl   Mar06  12:39 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       7714  0.0  0.1   2320  1280 ?        Ss   Mar07   0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       7715  0.4  2.6 108996 24892 ?        Sl   Mar07   5:21 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py
                          mirko       9345  0.0  0.2   6088  1920 pts/0    S+   14:53   0:00 grep --color=auto python
                          
                          
                          BananaJoeB Online
                          BananaJoeB Online
                          BananaJoe
                          Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @wendy2702 der läuft aber ja 1x als root und 9x als mirko in 2 verschiedenen Varianten

                          Der als root ist vermutlich der richtige, der hat auch die niedrigste Prozessnummer.
                          Also du hast irgendwo noch etwas was weitere Instanzen startet auf 2 wegen.
                          Da iobroker nicht der Besitzer ist, der vermutlich nicht.

                          was steht denn in den Cronjobs von mirko?

                          crontab -e
                          

                          ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                          wendy2702W 1 Antwort Letzte Antwort
                          1
                          • BananaJoeB BananaJoe

                            @wendy2702 der läuft aber ja 1x als root und 9x als mirko in 2 verschiedenen Varianten

                            Der als root ist vermutlich der richtige, der hat auch die niedrigste Prozessnummer.
                            Also du hast irgendwo noch etwas was weitere Instanzen startet auf 2 wegen.
                            Da iobroker nicht der Besitzer ist, der vermutlich nicht.

                            was steht denn in den Cronjobs von mirko?

                            crontab -e
                            
                            wendy2702W Online
                            wendy2702W Online
                            wendy2702
                            schrieb am zuletzt editiert von
                            #13

                            @bananajoe Bist mein Held für heute.

                            Es gab von den ersten Versuchen noch einen crontab den ich komplett vergessen hatte.

                            Denke mit löschen des Eintrags sollte mein Problem jetzt gelöst sein.

                            Bitte keine Fragen per PN, die gehören ins Forum!

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

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            760

                            Online

                            32.6k

                            Benutzer

                            82.1k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe