APCUPSD-Auswertescript

Die Idee hatte ich auch schon, allerdings taucht die #10157 nirgends als Variable auf.
Habe das Skript schon durchsucht, zudem habe ich diese auch nicht in IPS.

Skript ist von hier: http://www.tdressler.net/ipsymcon/nut_ips.html

Da war ja für mich nur das einzutragen:

 $regvars=array(38726);
 $GLOBALS['parent']=19379; /*[Komponenten\APC-USV]*/; //parent ID of master category
 $GLOBALS['catname']='APC-USV'; //master category name

Das ist alles soweit korrekt, die Regvar ist angelegt, der Client-Socket auch, Port ist richtig, IP ebenfalls.

Gru,
Matthias

Die „#10157“ ist glaube ich keine Variable. Klingt eher nach dem Socket oder der RegVar die er da sucht? Evtl. sucht er nach einem falschen Parent? In der RegVar das falsche Skript? …? :confused:

So sieht mein Baum aus:
ips_apc_nut.jpg

> Im „APC Deamon“ steht die IP vom NAS (da läuft der APC-Server) und der Port ist 3493.
> In der RegVar ist als Skript das darunter liegende „NUTregvar“ eingetragen

Und so sieht mein Config-Teil im „NUTregvar“-Skript aus:

 #######Begin Config
 //IPS Variablen IDs
 $regvars=array(15222 /*[APC Deamon\RegVar]*/);
 $GLOBALS['parent']=34979 /*[Hardware\USV]*/; // Ordner wo die ganzen Variablen dann angelegt werden
 $GLOBALS['catname']='UPSD'; //master category name
 $GLOBALS['idname']='ups.serial'; //unique ID parameter=serial
 $logfile='';  // nut.log
 ######End Config

Ob ich im Skript noch irgendwas angepasst habe weiß ich nicht mehr, glaube aber schon. Irgendwie mit Parent usw?!

Grüße,
Chris

Prüfe ich morgen! Bin gerade ins Bett gegangen und schreibe mit dem Handy.
Was bei mir nicht ist und ich weiß auch nicht wie ich das hinbekommen soll, ist das alles so untereinander steht (in der logischen Baumansicht). Aber sollte ja keinen Einfluss haben. Ich mache morgen Screenshots!
Gute Nacht!
Gruß,
Matthias

Um die Dinger in IO-Instanzen zu bekommen, einfach markieren, dann Strg+X und dann am Zielort Strg+V :wink: Alternativ mit einem IPS-Skript und einfach „IPS_SetParent“ verwenden :slight_smile:

Grüße,
Chris

Das APCUPSD-Script und das NUT-Script sind verwand, aber nicht identisch. Mixen ist da ungesund.

Wenn ich das ganze richtig verstehe, wird die UPS in NUT aber mit „upsc ups“ (wobei hier ups der Name der USV ist) abgefragt.

In diesem Fall wird upsc nicht benutzt, sondern ein direkter Connect auf den Socket gemacht. Kann man mit Telnet/putty etc auch selber probieren
Die RegVar muss als in seiner Konfiguration hinterlegten Parent den Client-Socket haben. Der NUT Server muss den Connect von der IPS IP erlauben (muss man z.B. in einer Synology eintragen).

HTH
Tommi

Ja ist auch soweit so gut - ich nutze ja APCUPSD nicht für die Firewall - dafür das NUT-Script.
Mit dem Parent stimmt jetzt auch - aber:

Verbindung wird nach wie vor Verweigert, die Firewall ist schon auf 3493 offen (also Regel ist korrekt gesetzt).
Aber ich muss mich ja immer noch an dem NUT-Server authentifizieren…
(Daher wird auch die Verbindung verweigert! - wenn ich NUT als exe mit dem „Monitor Benutzer Passwort etc“ in der Config ausführe geht das - also genau genommen UPSD.exe kann sich verbinden - aber IPS halt nicht.

Telnet geht ggf auch nicht - es wird da nicht spezifisch nach der UPS gefragt beim Connect, teste ich aber nochmal!

Gruß,
Matthias

Wenn die IP im NUT Server freigeschaltet ist, braucht man keinen User mehr:

telnet ups-tr 3493
Trying 192.168.xx.yy...
Connected to ups-tr.
Escape character is '^]'.
LIST ups
BEGIN LIST UPS
UPS ups "Description unavailable"
END LIST UPS
LIST VAR ups
BEGIN LIST VAR ups
VAR ups battery.charge "100"
VAR ups battery.charge.low "10"
VAR ups battery.charge.warning "50"
...

Hmm - dann die einfache Frage:

In welcher Config-Datei wird die frei geschaltet?

Ich habe jetzt mal folgendes in die hosts.allow eingetragen:

upsd : localhost, LOCAL, 127.0.0.1,192.168.1.XX

Wobei xx die IP ist von der die Abfrage kommt.
Jetzt bin ich allerdings nicht der Linux-Crack, ist das so richtig oder muss da noch etwas hinter? (ALLOW)
Und ist das denn der Dienst - oder wird ein anderer Dienst abgefragt?
Damit sollte ja der TCP-Wrapper angesprochen werden oder?

Auf meiner Synology steht es am Ende in /etc/hosts.deny (hosts.allow ist leer)

upsd: ALL EXCEPT 127.0.0.1 192.168.xx.yy 192.168.zz.zz

Ich habe irgendwo gelesen, dass neuere Kernels ggf. nur noch die hosts.allow nutzen und dort deny oder allow angeben.
Allerdings habe ich eben die Firewall nicht neu gestartet sondern heruntergefahren - wer macht denn auch die Option als erstes ins Menü :slight_smile:
Naja bin nicht Zuhause - ich muss später mal sehen ob meine Freundin die wieder einschaltet oder ich heute Abend, aktuell komme ich weder ins VPN noch auf den Server…
Großes Kino…

Hallo Zusammen,

ich bin es dann nochmals - also: Ich habe eine zweite USV an einem Raspi hängen.
Soweit kann die APCUPSD Software auf meinem 2012R2 diese auch IMMER problemlos auslesen.

Bei IPS habe ich wie vielfach beschrieben die RegVar und die Clientsocket-Instanz angelegt, allerdings funktioniert die mal, mal auch nicht (meistens nicht).
Ich habe die dann mal aktiv gesetzt, dann das Skript ausgeführt - dann gehts potentiell etwas öfter.

Bei meinem Server selbst (Windows 2012R2 mit USB passthrough vom ESXi 6) gehts immer völlig problemlos.
Hat jemand eine Idee?

Der Fehler ist:

Warning:  Socket ist nicht verbunden in [Komponenten\APC-USV\Werte aus USV auslesen] on line 81

Gruß,
Matthias

Guten Morgen,

mir ist am Wochenende aufgefallen dass im Ferienhaus die USV nicht mehr ordentlich ausgelesen wird :frowning:


10:38:00 | 38119 | ERROR | ScriptEngine | Result for Event 20504
Notice: Undefined variable: IPS_SENDER in C:\IP-Symcon\scripts\38119.ips.php on line 63
Fatal error: Call to undefined function CSCK_SetOpen() in C:\IP-Symcon\scripts\38119.ips.php on line 79
Abort Processing during Fatal-Error: Call to undefined function CSCK_SetOpen()
Error in Script C:\IP-Symcon\scripts\38119.ips.php on Line 79

Ich habe schon versuchet den Socket 2 mal zu öffnen und zu schließen, aber alles ohne Erfolg.
Wahrscheinlich wird das seit einem Update am 01/02 Juni nicht mehr gehen.
Zu hause funktioniert das ganze allerdings nach wie vor.

Hat evtl. noch jemand nach einem Update so ein Problem gehabt ?

Das apcupsd Script ist zu alt. Die Variablen heißen jetzt anders ($_IPS[‚Sender‘] und SetOpen wurde durch SetProperties ersetzt.

Für das Auslesen USV habe ich das NUT Modul geschrieben, es nutzt aber wegen der besseren Abdeckung NUT statt apcupsd. Alternativ gab es andere Scripte z.B. die Ausgabe des CLI parsen

Guten Morgen, ich bin etwas am verzweifeln.

Erst einmal vielen dank für die arbeit. So weit leuft alles super, bis auf das aus mit unbekannten gründen ab und an einfach die Variablen neu angelegt werden. Es wurde hier im verlauf schon mal erwähnt doch konnte ich nicht nachvolziehen ob behoben oder gar wo das Problem lag.

Hat jemand noch eine idee?

http://pastebin.com/vjiniGGi
Vielen dank vor ab

Das Script legt sich seine vordefinierten Variablen selber an.siehe Funktion storevars.

Bitte dieses Script nicht mehr nutzen. Es ist von 2011 und passt nicht mehr zu IPS3/4!

Auch APC USVs lassen sich mit NUT auslesen.

Nut ist aber für Windows noch Beta.
Und bevor ich das mal umstellen werde inkl. aller Aktionen bleibe ich erstmal auch bei apcupsd.
Ich habe das Script schon vor einiger Zeit mal für 3.4/4.0 fit gemacht.
Wenn du damit kein Problem hast tommi, stelle ich es mal online.
Michael

Kannst Du gerne machen.

Der Status für den NUT Windows-Service ist schon seit 2011 unverändert. Ich würde jetzt nicht darauf wetten, das sich irgendwann mal einer erbarmt. Ein Raspberry, NAS oder eine kleine Linux-VM ist jedoch ohnehin bei vielen USV-Nutzern vorhanden.

Tommi

Danke für die schnellen Infos bin leider nicht so schnell.
Ja er legt sie an doch habe ich das Problem das er sie nach ner zeit immer wieder neu anlegt und die alten verschwinden.

Liebe Grüße Casi

Habe mir das Script nun angeschaut. Welchen Grund hat es die variablen aber und an einfach zu löschen und neu anzulegen? Wovon ist dies Abhängig?

Danke und liebe Grüße
casi

Bei den USV ist es so,dass die verschiedenen Typen sehr unterschiedliche Daten liefern. Das Verhalten ist eine Eigenheit der genutzten Variablenverwaltung, was diesen Umstand abdecken muss… Es gibt einen Block wo alle möglichen Variablen registriert sind und beim Start angelegt werden. Im weiteren Programmfortschritt, wenn man mehr Informationen über das Gerät und seine Daten hat, werden die nicht gefüllten Variablen wieder entsorgt.

Tommi