Ankündigung

Einklappen

ETS5 Sammelbestellung Vollversion

Infos unter: Link
Mehr anzeigen
Weniger anzeigen

Neues Plugin: APC UPS / USV

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

  • loeserman
    antwortet
    Ne habe nur eine USV. Daher kann ich den Parameter auch weglassen. Dachte dass es nicht stört, aber Du hast Recht, dann hätte ich das bei dem Item auch angeben müssen. Habe den Parameter gelöscht und schon geht es. Danke für die schnelle Hilfe.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von loeserman Beitrag anzeigen
    Kann denn die Instanz einen Einfluss haben?
    Ja, sonst würde es den Parameter ja nicht geben

    schau mal in die Doku unter Multi Instance

    Hast Du denn mehrere UPS, dass Du mehrere Instanzen brauchst?

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    In der plugin.yaml habe ich folgendes angegeben:

    Code:
    apcups:
        plugin_name: apcups
        instance: apcups1
        cycle: 10
        host: 127.0.0.1
        port: 3551
    Kann denn die Instanz einen Einfluss haben?

    Einen Kommentar schreiben:


  • aschwith
    antwortet
    Hast du in der plugin.yaml für das plugin eine Instanz angegeben?

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Hallo,
    ich habe heute das apcups plugin eingebunden. Leider hat er mir anfangs keine Items angelegt. Dann habe ich mal etwas im Code debuged und musste folgendes anpassen. Nun läuft es aber ich möchte natürlich eigentlich die Version, die auch hochgeladen ist, verwenden. Habt ihr eine Idee, was mir fehlt?

    Yaml Datei
    Code:
    R02:
        USV:
            DATE:
                name: R02 USV für Serverbrett - Zeitpunkt des Auslesens
                visu_acl: ro
                type: str
                apcups: date
            STATUS:
                # will be 'ONLINE', 'ONBATT', or in case of a problem simply empty
                name: R02 USV für Serverbrett - Status (ONLINE, ONBATT, <empty on error>)
                visu_acl: ro
                type: str
                apcups: status
            BCHARGE:
                name: R02 USV für Serverbrett - Ladestatus in Prozent
                visu_acl: ro
                type: num
                apcups: bcharge
            TIMELEFT:
                name: R02 USV für Serverbrett - Mögliche Laufzeit auf Batterie in Minuten
                visu_acl: ro
                type: num
                apcups: timeleft
            STARTTIME:
                name: R02 USV für Serverbrett - Startzeit
                visu_acl: ro
                type: str
                apcups: starttime
            TONBATT:
                name: R02 USV für Serverbrett - Laufzeit auf Batterie in Sekunden
                visu_acl: ro
                type: num
                apcups: tonbatt
    Anpassungen im Plugin, damit es läuft
    Code:
        def parse_item(self, item):
            #if self.has_iattr(item.conf, ITEM_TAG[0]):                                ### auskommentiert, da es bei mir nicht geht
            if ITEM_TAG[0] in item.conf:                                               ### alternative Lösung
                #apcups_key = (self.get_iattr_value(item.conf, ITEM_TAG[0])).lower()   ### auskommentiert, da es bei mir nicht geht
                apcups_key = item.conf[ITEM_TAG[0]]                                    ### alternative Lösung
                self._items[apcups_key]=item
                self.logger.debug("item {0} added with apcupd_key {1}".format(item,apcups_key))
                return self.update_item
            else:
                return None
    Irgendwie scheint es etwas mit dem "has_iattr()" und "get_iattr()" z utun zu haben. Fehlt mir da etwas?

    Mein Version
    SmartHomeNG Version:
    1.7.2.master (3828810e) in /usr/local/smarthome (tags/v1.7.2)

    SmartHomeNG Plugins Version:
    1.7.2.master (9db85809) in /usr/local/smarthome/plugins (tags/v1.7.2)

    Python Version:
    3.7.3 final ()

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Danke Dir für die schnelle Antwort. Komischerweise habe ich gar keine Benachrichtigung erhalten, drum habe ich sie jetzt erst gesehen. Das klappt sonst immer absolut zuverlässig.

    Was mich total freut ist, dass ich es in der Zwischenzeit genau so auch gelöst habe, trotz meiner faktisch kaum vorhandenen Python Kenntnisse und grad wollte ich die selbe Lösung hier posten

    Funktioniert jetzt einwandfrei.

    Vielen Dank und Gruß,

    Martin

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das Plugin ist ja schon etwas älter und recht "übersichtlich" (In Summe nur 83 Zeilen lang).

    Hinter dem 1. Space wird bewusst abgeschnitten (warum kann ich nicht sagen). Siehe Zeile 73:

    Code:
    val = val.split(' ',1)[0]    # ignore anything after 1st space
    Wenn Du die Zeile aus kommentierst, solltest Du jeweils den vollen String in das Item bekommen.

    Alternativ könnte das Abschneiden beim 1. Space nur für non-str Items erfolgen. Dazu den Code ab Zeile 65 von
    Code:
         for line in output.split('\n'):
                (key,spl,val) = line.partition(': ')
                key = key.rstrip().lower()
                val = val.strip()
                val = val.split(' ',1)[0] # ignore anything after 1st space
    
                if key in self._items:
                     logger.debug("update item {0} with {1}".format(self._items[key],val))
                     item = self._items[key]
                     logger.debug("Item type {0}".format(item.type()))
                     if item.type() == 'str':
                         item (val, 'apcups')
                     else:
                         item (float(val), 'apcups')
    in
    Code:
         for line in output.split('\n'):
                (key,spl,val) = line.partition(': ')
                key = key.rstrip().lower()
                val = val.strip()
    
                if key in self._items:
                     logger.debug("update item {0} with {1}".format(self._items[key],val))
                     item = self._items[key]
                     logger.debug("Item type {0}".format(item.type()))
                     if item.type() == 'str':
                         item (val, 'apcups')
                     else:
                         val = val.split(' ',1)[0] # ignore anything after 1st space
                         item (float(val), 'apcups')
    ändern.

    Probier das mal aus. Ich würde wenn es für Dich funktioniert das Plugin im Nachgang im develop Branch entsprechend anpassen.

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Hi

    Den Thread kram ich doch mal wieder raus.

    Ich habe mir wegen meiner drei APC USV auch mal das Plugin installiert und es läuft. Werte bekomme ich.
    Bei den num Werten verstehe ich auch, warum nach dem ersten Leerzeichen abgeschnitten wird. Allerdings passiert das auch bei str, verstehe nur nicht warum?
    Daher bekomme ich ins item anstatt z.B. " Smart-UPS 750" nur "Smart-UPS". An der item Definition kann es wohl nicht liegen.

    Lässt sich das ohne großen Aufwand ändern?

    Code:
    # USV-Dachboden.yaml
    
    Dachboden:
    
        USV:
    
            hostname:
                type: str
                apcups: hostname
                
            version:
                type: str
                apcups: version
                
            upsname:
                type: str
                apcups: upsname
                
            model:
                type: str
                apcups: model            
                
            status:
                type: str
                apcups: status            
                
            timeleft:
                type: num
                apcups: timeleft
    
            bcharge:
                type: num
                apcups: bcharge
                
            battv:
                type: num
                apcups: battv
    Vielen Dank

    Martin

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    Eben das Plugin entdeckt und gleich eingerichtet.
    Passt, wackelt und hat Luft..... DANKE!

    Habe bei mir noch 2 kosmetische Änderungen am Plugin durchgeführt (reine Geschmackssache ):
    1. Cycle in die plugin.conf ausgelagert
    2. Beim Update war noch eine logger.info drin. Habe diese durch logger.debug ersetzt.

    Hinweis für Mitlesende: Bei dem Wert 'xoffbatt' muß man aufpassen und den Typ str anstatt num wählen, da dieser beim Starten des Daemon N/A zieht und das nicht in den num passt. Steht aber klar in der APC-Doku drinnen

    Danke nochmal an den TE Greentux!

    Cheers,
    Oliver

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Zitat von Berdi Beitrag anzeigen
    Leider bekomme ich im smarthome.py Debug folgenden Fehler:
    https://knx-user-forum.de/smarthome-...rbehebung.html

    Einen Kommentar schreiben:


  • greentux
    antwortet
    Welche Vesion von smarthome? git oder latest stable?

    Einen Kommentar schreiben:


  • Berdi
    antwortet
    Hallo,

    ich bin grad dabei, das APC/UPS Plugin auf dem smarthome.py Images zu implementieren. Der NIS-Server läuft und ich kann über „apcaccess status“ auch die Werte der USV abfragen. Leider bekomme ich im smarthome.py Debug folgenden Fehler:



    2014-05-19 20:58:09,093 DEBUG Apcups update item EG.Gallerie.status with ONLINE -- __init__.py:update_status:69
    2014-05-19 20:58:09,118 ERROR Apcups Method Apcups exception: 'Item' object has no attribute 'type' -- scheduler.py:_task:348
    Traceback (most recent call last):
    File "/usr/smarthome/lib/scheduler.py", line 344, in _task
    obj()
    File "/usr/smarthome/plugins/apcups/__init__.py", line 71, in update_status
    logger.debug("item type {0}".format(item.type()))
    AttributeError: 'Item' object has no attribute 'type'
    2014-05-19 20:58:09,565 DEBUG Scheduler dummy next time: 2014-05-19 21:03:09+02:00 -- scheduler.py:_next_time:289
    2014-05-19 20:58:09,574 DEBUG Scheduler Apcups next time: 2014-05-19 21:03:09+02:00 -- scheduler.py:_next_time:289
    2014-05-19 20:59:50,542 INFO Main Number of Threads: 7 -- smarthome.py:stop:348
    2014-05-19 20:59:50,548 INFO Main Stop Plugins -- plugin.py:stop:70
    2014-05-19 20:59:50,975 DEBUG Main KNX: closing socket 127.0.0.1:6720 -- connection.py:close:303


    Gruß
    Detlef

    Einen Kommentar schreiben:


  • greentux
    hat ein Thema erstellt Neues Plugin: APC UPS / USV

    Neues Plugin: APC UPS / USV

    Soeben ins develop gewandert.
    Es lassen sich sämtliche Werte der USV auslesen. Getestet nur mit einer Smart UPS. Bitte teste jeder seine USV. Bedingung ist, das ein APC NIS läuft und lokal apcaccess aufgerufen werden kann.
Lädt...
X