Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues Plugin: APC UPS / USV
Einklappen
X
-
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.
-
Zitat von loeserman Beitrag anzeigenKann denn die Instanz einen Einfluss haben?
schau mal in die Doku unter Multi Instance
Hast Du denn mehrere UPS, dass Du mehrere Instanzen brauchst?
- 1 Likes
Einen Kommentar schreiben:
-
In der plugin.yaml habe ich folgendes angegeben:
Code:apcups: plugin_name: apcups instance: apcups1 cycle: 10 host: 127.0.0.1 port: 3551
Einen Kommentar schreiben:
-
Hast du in der plugin.yaml für das plugin eine Instanz angegeben?
Einen Kommentar schreiben:
-
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
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
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:
-
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:
-
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
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')
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')
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:
-
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
Martin
Einen Kommentar schreiben:
-
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:
-
Zitat von Berdi Beitrag anzeigenLeider bekomme ich im smarthome.py Debug folgenden Fehler:
Einen Kommentar schreiben:
-
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:
-
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.Stichworte: -
Einen Kommentar schreiben: