Ankündigung: NUT - Network UPS Tools

Begonnen von Creideiki, 18 September 2014, 14:32:38

Vorheriges Thema - Nächstes Thema

Creideiki

#30
Irgendwie kann FHEM immer mehr, als man denkt.

Jetzt hab ich extra ein paar Berechnungen in das NUT-Modul eingebaut, um ups.realpower zu berechnen, weil dieser Wert nicht geliefert wird. Und ich habe mir Gedanken gemacht, wie man das über ein Attribut universeller gestalten könnte.

Dann lese ich mir (endlich) mal durch, wie userReadings funktioniert und muß feststellen, dass das doch schon alles geht.

Also gibt es am morgen wieder eine neue Version von 34_NUT, bei der ich diese überflüssigen Berechnungen rausgeworfen habe. Stattdessen habe ich bei mir jetzt asReadings um ups.realpower.nominal ergänzt und dafür ups.realpower, das bei meiner USV eh nicht vorhanden ist, rausgeworfen:
attr USV asReadings battery.charge,battery.runtime,input.voltage,ups.load,ups.realpower.nominal
Und damit kann ich mein gewünschtes ups.realpower einfach berechnen lassen:
attr USV userReadings upsRealpower {ReadingsVal("USV","ups.realpower.nominal",0)*ReadingsVal("USV","ups.load",0)/100}
Und siehe da - ups.realpower ist da, ganz ohne Zutun des Moduls.  ;D

[UPDATE] Soweit die Theorie. Geht aber nicht. Muß ich noch rausfinden, wieso.
[2. UPDATE] Weil userReadings im Moment keine Punkte im Namen verträgt. Codebeispiel oben entsprechend geändert.

volschin

Hallo Creideiki,
ich habe gerade mit deiner neuen komma-separierten Liste erste Erfahrungen gemacht. Du solltest das bitte so implementieren, dass es egal ist, ob am Anfang oder Ende ein Leerzeichen steht (trim).

Aktuell:
battery.charge,battery.runtime -> funktioniert
battery.charge, battery.runtime -> funktioniert nicht für zweiten Wert
battery.charge ,battery.runtime -> funktioniert nicht für ersten Wert

Sonst macht das jetzt schon einen sehr stabilen Eindruck. Danke für das Modul.  :)

Bzgl. der FHEM-Statistik bin ich mir noch nicht sicher, ob ich es so toll finde, dass da jetzt mein genauer UPS Typ übertragen wird. Was bringt diese Information?

Gruß,
Veit
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Creideiki

Zitat von: volschin am 26 September 2014, 10:23:55
Hallo Creideiki,
ich habe gerade mit deiner neuen komma-separierten Liste erste Erfahrungen gemacht. Du solltest das bitte so implementieren, dass es egal ist, ob am Anfang oder Ende ein Leerzeichen steht (trim).
Danke. Wird implementiert.

Zitat
Bzgl. der FHEM-Statistik bin ich mir noch nicht sicher, ob ich es so toll finde, dass da jetzt mein genauer UPS Typ übertragen wird. Was bringt diese Information?

Hm. An sich dient es dazu, sicher zu sein, dass man die richtige USV in der Mache hat; ich könnte mir vostellen, dass es übersichtlicher ist, wenn man mehrere USVs verwendet. Ich hab das eigentlich aus dem HMLAN-Modul übernommen; da werden ja auch Typ und Seriennummer aller Geräte in Attributen angelegt.

Gibt es da einen üblichen Modus Operandi? Gibt es Argumente dafür, das zu tun oder zu lassen?

justme1968

'normalerweise' sind attribute dinge die der anwender einstellt. readings sind messwerte die sich ändern und geloggt werden sollen und internals sind device spezifische informationen die sich (meist) nicht während der laufzeit ändern.

typ, software version und solche dinge kommen typischweise in die internals (also z.b. $hash->{model}).

martin steckt das vor allem deshalb in attribute statt internals weil es als attribut gespeichert wird und beim neustart zur verfügung steht ohne das ein device per funk abgefragt werden muss was funklast erzeugt und eventuell gar nicht geht weil das device schläft. bei allem was per kabel angebunden ist sollte das nicht relevant sein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Creideiki

OK, das kann ich so nachvollziehen. Dann werf ich das raus.

Creideiki

#35
Neue Version 6620

  • Das Timing mit pollState und pollVar ist so überarbeitet, dass er zum einen mit dem Lesen aller Werte anfängt und zum anderen sich auch an die mit pollVar eingestellte Zeit hält.
  • Die automatische Erzeugung von Werten wie ups.power ist rausgeflogen. Das funktioniert besser mit userReadings. Achtung: Mit userReadings erstellte Readings dürfen im Moment keinen Punkt enthalten, sonst klappt das nicht.
  • Die automatische Erzeugung der Attribute model und serNo ist rausgeflogen. Es ist nicht wirklich notwendig, kann einfach erzeugt werden (z.B. mit userReadings) und ist u.U. störend.
  • Die Liste der Readings (asReadings) darf jetzt auch Leerzeichen zwischen Komma und Reading enthalten.

Markus

Ich kriegs einfach nicht hin vielleicht hat noch wer einen tipp für mich

pi@Agent-Schlafzimmer ~ $ sudo apt-get install nut-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libupsclient1
The following NEW packages will be installed:
  libupsclient1 nut-client
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 297 kB of archives.
After this operation, 542 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Err http://mirrordirector.raspbian.org/raspbian/ wheezy/main libupsclient1 armhf 2.6.4-2.3
  404  Not Found
Err http://mirrordirector.raspbian.org/raspbian/ wheezy/main nut-client armhf 2.6.4-2.3
  404  Not Found
Failed to fetch http://mirrordirector.raspbian.org/raspbian/pool/main/n/nut/libupsclient1_2.6.4-2.3_armhf.deb  404  Not Found
Failed to fetch http://mirrordirector.raspbian.org/raspbian/pool/main/n/nut/nut-client_2.6.4-2.3_armhf.deb  404  Not Found
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
pi@Agent-Schlafzimmer ~ $


am zweiten raspi klappt es noch weniger, da friert die Konsole einfach ein und nichts geht mehr
pi@Agent-Kuche ~ $ sudo apt-get install nut-client nut-server
pi@Agent-Kuche ~ $ ts... 5%




Bitte nicht Schlagen ich weis wirklich nicht was jetzt noch Fehlt...
Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

eldrik

#37
404 not found klingt so als wäre etwas mit der erwarteten Downloadquelle nicht in Ordnung, sprich die erwarteten Pakete sind Online nicht verfügbar, dass kann an alten Paketinformationen liegen!

Hast du denn mal wie vom Programm vorgeschlagen
Zitatapt-get update
ausgeführt?

Greetz
Eldrik

Creideiki

Ich kann da natürlich nur raten, aber das sieht mir eher nach Netzwerkproblem aus... entweder bei dir oder bei raspbian.org oder zwischendrin. Versuch es doch einfach später nochmal, vielleicht erledigt sich das auch von selbst.

Mad22

Hallo,

Ich bin gerade auf diesen Threat gestoßen weil ich mir eine USV gekauft habe die ich an den Raspberry , auf dem Fhem läuft, anschließen möchte .

Erst mal besten Dank an Creideiki für das 34_NUT.pm Modul welches sehr gut funktioniert !!

Ich habe jetzt zwei USV's .

Eine USV für die Heizung , den Fhem Raspi und der zweiten Fritzbox im EG .
Eine USV auf dem Boden für den NAS Server und die Haupt Fritzbox im OG .

Der NAS ist eine Synology DS412+ auf der tatsächlich ein NUT-Server läuft, der so wie im 4. Beitrag erklärt, ausgelesen werden kann . Die USV im NAS heist einfach "ups" . Also ein upsc ups@192.168.0.120 liest die USV aus .

Das erst mal nur kurz, der Vollständigkeit halber, vorweg  ;)

Die zweite USV wollte ich an den Fhem - Raspi anschließen, weil sonst kein PC in der nähe ist . Also muss ich auf dem Raspberry den NUT Server installieren . Ich möchte später auch mal eine Email oder Push Nachricht bekommen wenn Stromausfall ist .

Ich habe mich anhand dieses Blog Eintrages orientiert : http://abakalidis.blogspot.de/2013/04/using-raspberry-pi-as-ups-server-with.html

Hier nur mal eine kleine kurze und knappe Doku wie ich den Server bei mir eingerichtet habe :

Den NUT-Server + Client installieren


sudo apt-get install nut-client nut-server


USB-Utils installieren falls die nicht schon vorhanden sind .



sudo apt-get install usbutils



jetzt die USV am Raspi anstecken und mit dem Befehl lsusb kontrollieren ob die USV erkannt wird


pi@fhempi ~ $ lsusb

Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 008: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 005: ID 03eb:204b Atmel Corp. LUFA USB to Serial Adapter Project
Bus 001 Device 006: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter


Die USV wurde erkannt .

Nun kann der Server konfiguriert werden :

die Datei mit folgendem Befehl sudo nano /etc/nut/ups.conf aufrufen, editieren und die USV eintragen . Der Name den sie im NUT Server später hat steht in den eckigen klammern .

[apc550VA]
driver = usbhid-ups
        port = auto
        desc = "APC Back-UPS RS 550VA BR550GI"




jetzt die folgenden drei Befehle eingeben um die korrekten Rechte für den Ordner zu vergeben :


pi@fhempi ~ $ sudo mkdir /var/run/nut
pi@fhempi ~ $ sudo chown root.nut /var/run/nut/
pi@fhempi ~ $ sudo chmod 770 /var/run/nut/


Nun kann der USB Treiber getestet werden :



pi@fhempi ~ $ sudo upsdrvctl start
Network UPS Tools - UPS driver controller 2.6.4
Network UPS Tools - Generic HID driver 0.37 (2.6.4)
USB communication driver 0.32
Using subdriver: APC HID 0.95



Das sieht schon mal ganz gut aus .

Nun noch die Datei sudo nano /etc/nut/upsd.conf ändern damit der Server auch im Netzwerk angesprochen werden kann :

folgende Zeilen einfügen :
LISTEN 127.0.0.1 3493
LISTEN 192.168.0.22 3493


wobei die IP in der zweiten Zeile die IP des Rasperry ist auf dem der Server läuft .

dann mit


sudo service nut-server start



den Server starten und eventuell mit sudo update-rc.d -f nut-server defaultsden Server Dienst beim booten des Raspberry starten lassen .

folgender Befehl sollte den gestarteten Dienst anzeigen :

pi@fhempi ~ $ ps -ef | grep ups

nut       2210     1  0 10:48 ?        00:00:00 /sbin/upsd
nut       2609     1  0 10:53 ?        00:00:00 /lib/nut/usbhid-ups -a apc550VA
pi        2944  2488  0 11:02 pts/0    00:00:00 grep --color=auto ups


mit dem folgenden Befehl bekommt man dann alles was die USV so an Daten liefert angezeigt .

pi@fhempi ~ $ upsc apc550VA@192.168.0.22
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.date: 2001/09/25
battery.mfr.date: 2014/09/11
battery.runtime: 840
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 14.2
battery.voltage.nominal: 12.0
device.mfr: American Power Conversion
device.model: Back-UPS RS 550G
device.serial: 3B1437X13447
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.6.4
driver.version.data: APC HID 0.95
driver.version.internal: 0.37
input.sensitivity: medium
input.transfer.high: 282
input.transfer.low: 176
input.transfer.reason: input voltage out of range
input.voltage: 237.0
input.voltage.nominal: 230
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: 857.L4 .I
ups.firmware.aux: L4
ups.load: 38
ups.mfr: American Power Conversion
ups.mfr.date: 2014/09/11
ups.model: Back-UPS RS 550G
ups.productid: 0002
ups.realpower.nominal: 330
ups.serial: 3B1437X13447
ups.status: OL
ups.test.result: No test initiated
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d


Der Server läuft und man kann Fhem konfigurieren wie hier im Threat beschrieben .

Vielleicht hilft dem einen oder anderen diese kleine Doku zum einrichten den NUT-Servers auf einem Raspberry Pi .
Wenn jemand Fehler entdeckt bitte melden, dann korrigiere ich das .

Gruß Martin
Raspberry Pi2 Model B, Add-On Board mit 1.8" TFT LCD, FHEM V5.6, CULFW V1.61, JeeLink Clone, HMUsb,  FS20, Homematic , LaCrosse, 1-Wire (10x DS1820)

borzo83

#40
Vielen Dank für die ausführliche Beschreibung Martin! Hat geklappt!

Wie kann ich einfach überprüfen ob die USV Strom bekommt oder nicht?

volschin

Übrigens ein kleiner Hinweis von mir zum Versenden von E-Mails oder Push-Nachrichten bei Stromausfall. Ich habe vor kurzem bei einem 45 Minuten Ausfall festgestellt, dass zwar meine Fritzboxen und der Raspi am Leben waren, jedoch die Internet-Verbindung tot. Ich habe einen T-Entertain Anschluss und vermutlich war auch irgendwelche Zwischenverteiler-Technik der Telekom davon betroffen. Also davon ausgehen, dass das Senden bei Stromausfall fehlschlägt.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Creideiki

Stimmt. Deshalb hab ich mir einen kleinen GSM-Stick zugelegt mit einer billigen SIM drin, die der RasPi per gammu ansteuert. Damit kann der RasPi auch nach Hilfe rufen, wenn das Internet tot ist. Vorausgesetzt, der zuständige GSM-Mast ist nicht auch tot...  :P

ojb

#43
Hallo Creideiki,

erst mal vielen Dank für das Modul. Ich hatte es seit Monaten absolut stabil im Einatz.

Seit ein paar Tagen habe ich jedoch ganz komische Fehler. Es wurde eigentlich weder an der HW noch an der SW etwas verändert.

Bei mir hängt die USV am NAS (ojbnas) und von dort werden alle Infos geholt.

Wenn ich upsc ups@ojbnas auf der FHEM-Maschine eingebe kommen auch immer die gewünschten Daten.

Starte ich FHEM, bekomme ich jetzt allerdings:

2015.05.18 14:09:53 3: Opening usv device ojbnas:3493
2015.05.18 14:10:03 3: NUT antwortet nicht
2015.05.18 14:10:03 3: Opening usv device ojbnas:3493
2015.05.18 14:10:13 3: NUT antwortet nicht


Und jetzt wird es interessant. Wenn ich in FHEM direkt auf das Device gehe, dann im Define ojbnas auf ojbnas1 ändere, was es nicht gibt, und wieder zurück auf ojbnas und anschliessend disable auf 0 und dann wieder auf 1, dann geht es wieder.

Was kann das sein?

Um jede Hilfe dankbar.

Liebe Grüße
Oli
FHEM unter Debian auf Asus EEBox: KNX (Wetterstation, Rollläden, Beleuchtung), Maple-CUN (Temperatur und Feuchte über 1-Wire, Intertechno-Funksteckdosen), PV-Anlage mit Plenticore und BYD, Viessmann Wärmepumpe, 1-Wire (Temperatur, Feuchte, Stromverbrauch), Husquarna-Automower, ...

Creideiki

#44
Sorry, dass es so lange gedauert hat; ich komme zur Zeit kaum noch an den Rechner.

Ich hab mir den Code nochmal angeschaut. Anscheinend lief er auf einen Timeout. Ich hab zwar was eingebaut, dass er dann automatisch die Verbindung wieder aufbaut, aber das geht so wohl nicht. Ich versuche das mal zu klären.

Im Moment ist es definitiv so, dass er die Verbindung nicht mehr aktiv kriegt.

Läuft er bei dir nach der Umbenennungsaktion wieder?