Mini-HowTo: Green Cell® UPS USV mit Nagios überwachen

Der Status einer günstigen unterbrechungsfreien Stromversorgung (USV), in dem Fall eine (Green Cell® UPS USV Unterbrechungsfreie Stromversorgung 600VA (360W)soll mittels Nagios abgefragt werden. Das UPS Modell ist mit dem Network UPS Tools (NUT) Treiber blazer_usb kompatibel. Die USV versorgt einen Clientrechner client.lan, Nagios ist auf einem Server server.lan installiert. Unter debian bzw. seinen Ablegern lässt sich die nötige Software auf dem Clientrechner wie gehabt installieren:
sudo apt install nut

Irgendwelche Abhängigkeiten sollten natürlich aufgelöst werden. Danach editieren wir die Datei /etc/nut/ups.conf und fügen am Ende folgende Definition für die GreenCell UPS ein:
[GreenCell]
        driver = "blazer_usb"
        port = "auto"
        desc = "GreenCell USV 600VA"
Die Datei /etc/nut/nut.conf editiert man dann entsprechend dem Verwendungszweck (Standalone/Netzserver/-client)
# Network UPS Tools: example nut.conf
#
##############################################################################
# General section
##############################################################################
# The MODE determines which part of the NUT is to be started, and which
# configuration files must be modified.
#
# This file try to standardize the various files being found in the field, like
# /etc/default/nut on Debian based systems, /etc/sysconfig/ups on RedHat based
# systems, ... Distribution's init script should source this file to see which
# component(s) has to be started.
#
# The values of MODE can be:
# - none: NUT is not configured, or use the Integrated Power Management, or use
#   some external system to startup NUT components. So nothing is to be started.
# - standalone: This mode address a local only configuration, with 1 UPS 
#   protecting the local system. This implies to start the 3 NUT layers (driver,
#   upsd and upsmon) and the matching configuration files. This mode can also
#   address UPS redundancy.
# - netserver: same as for the standalone configuration, but also need
#   some more network access controls (firewall, tcp-wrappers) and possibly a
#   specific LISTEN directive in upsd.conf.
#   Since this MODE is opened to the network, a special care should be applied
#   to security concerns.
# - netclient: this mode only requires upsmon.
#
# IMPORTANT NOTE:
#  This file is intended to be sourced by shell scripts.
#  You MUST NOT use spaces around the equal sign!

MODE=standalone

Auf dem Server wird Nagios am besten aus den Quellen installiert, viele Plugins und auch das Programmpaket selber liegt meistens in recht hm... veralteten Versionen vor. Ich verweise hier mal auf ein recht aktuelles HowTo. ^^

Sobald Nagios läuft, stricken wir uns einen Befehl zum Ansprechen der UPS zusammen und editieren dazu die Datei /usr/local/nagios/etc/objects/commands.cfg
# UPS Check
#
#
define command {

    command_name check_ups
    command_line    $USER1$/check_ups -H $HOSTADDRESS$ -u GreenCell
}

Wie man unschwer erkennen kann, bezieht sich der Befehl in der vorletzten Zeile auf das in der Datei /etc/nut/ups.conf definierte Gerät. Dieser Befehl kann nun in beliebigen Serverkonfigurationen, die Nagios überwacht, angewendet werden. Wir richten nun aber erst einmal die Nagios Konfiguration des Clients ein, der durch die USV versorgt wird und editieren dazu eine neue Datei, in dem Fall nennen wir sie einfach /usr/local/nagios/etc/servers/client.lan.cfg
(...)
define service {
use                     local-service
host_name               client.lan
service_description     GreenCell UPS
check_command           check_ups!-H client.lan -u GreenCell

Ab diesem Zeitpunkt sollte der Status der UPS abgefragt werden können. Welche Werte genau abgefragt werden können ist natürlich von der jeweiligen UPS abhängig und welche Werte von Belang sind. Wie bei den meisten anderen Nagios Plugins können auch bei check_ups die möglichen Parameter durch einen Aufruf auf den Kommandozeile abgefragt werden. Hier man ein wenig Copy & Paste:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -h
check_ups v2.3.3 (nagios-plugins 2.3.3)
Copyright (c) 2000 Tom Shields
Copyright (c) 2004 Alain Richard <alain.richard@equation.fr>
Copyright (c) 2004 Arnaud Quette <arnaud.quette@mgeups.com>
Copyright (c) 2000-2014 Nagios Plugin Development Team
    <devel@nagios-plugins.org>

This plugin tests the UPS service on the specified host. Network UPS Tools
from www.networkupstools.org must be running for this plugin to work.

Usage:
check_ups -H host -u ups [-p port] [-v variable] [-w warn_value] [-c crit_value] [-e] [-to to_sec] [-T]

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 --extra-opts=[section][@file]
    Read options from an ini file. See
    https://www.nagios-plugins.org/doc/extra-opts.html
    for usage and examples.
 -H, --hostname=ADDRESS
    Host name, IP Address, or unix socket (must be an absolute path)
 -p, --port=INTEGER
    Port number (default: 3493)
 -u, --ups=STRING
    Name of UPS
 -T, --temperature
    Output of temperatures in Celsius
 -e, --extended-units
    Allow nonstandard units in performance data (used for voltage and temperatures)
 -v, --variable=STRING
    Valid values for STRING are LINE, TEMP, BATTLEFT, BATTPCT or LOADPCT
 -w, --warning=DOUBLE
    Response time to result in warning status (seconds)
 -c, --critical=DOUBLE
    Response time to result in critical status (seconds)
 -t, --timeout=INTEGER:
    Seconds before connection times out (default: 10)
    Optional ":" can be a state integer (0,1,2,3) or a state STRING

This plugin attempts to determine the status of a UPS (Uninterruptible Power
Supply) on a local or remote host. If the UPS is online or calibrating, the
plugin will return an OK state. If the battery is on it will return a WARNING
state. If the UPS is off or has a low battery the plugin will return a CRITICAL
state.

Notes:
 You may also specify a variable to check (such as temperature, utility voltage,
 battery load, etc.) as well as warning and critical thresholds for the value
 of that variable.  If the remote host has multiple UPS that are being monitored
 you will have to use the --ups option to specify which UPS to check.

 This plugin requires that the UPSD daemon distributed with Russell Kroll's
 Network UPS Tools be installed on the remote host. If you do not have the
 package installed on your system, you can download it from
 http://www.networkupstools.org

Send email to help@nagios-plugins.org if you have questions regarding use
of this software. To submit patches or suggest improvements, send email to
devel@nagios-plugins.org

Eine am Server abgesetzte Anfrage ergibt in unserem Fall:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -H prusapi.lan -u GreenCell
UPS OK - Status=Online Utility=230,0V Batt=100,0% Load=4,0% |voltage=230,000000;;;0,000000 battery=100,000000%;;;0,000000;100,000000 load=4,000000%;;;0,000000;100,000000

Nagios verwertet diesen Schnipsel so:



Einige Links in diesem Beitrag sind Vorschläge / Einkaufsquellen und sog. Affiliatelinks. Wenn Du etwas über diesen Link kaufst, erhalten wir eine kleine Provision. Der Preis für Dich bleibt derselbe. Vielen Dank für Deine Unterstützung.

Some of the links are suggestions for parts to replicate the thing and affiliate. If you buy something, I get a small commission. The price you pay is the same. Thank you very much.

ESP8266 flashen

Foto: Make Magazin DE - Eigenes Werk, CC BY-SA 4.0, Link
Neulich musste ich eine Reihe ESP8266-01S mit einer bestimmten Firmware flashen. Das geht am schnellsten auf der Konsole:
sudo esptool.py --port /dev/ttyUSB0 erase_flash

sudo esptool.py --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x0000 nodemcu_integer_0.9.6-dev_20150704.bin

Simplify 3d Profil für AnyCubic i3 MEGA mit Titan Extruder

Da es immer etwas frickelig ist, die richtigen Einstellungen für den Drucker herauszufinden - zumal wenn er "spezielle" Umbauten wie einen Titan Clone aus Shenzen hat - stelle ich hier mal mein Slicer Profil zur Verfügung. Das Profil ist für Simplify 3d in der aktuellen Version. Den Umbau auf einen Titan Extruder und die für Marlin notwendigen Änderungen an der Firmware habe ich ja hier schon erläutert. Inzwischen habe ich natürlich einiges kalibriert, so zum Beispiel die Fahrwege der 3 Achsen, womit die Maße der gedruckten Teile jetzt auf 0.02 mm stimmen. Bei mir lautet diese in der configuration.h so:
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80.80, 80.40, 396.432, 453.02}

Als Firmware empfehle ich momentan die von David Ramiro gepflegte Version, zu der es neuerdings auch eine mit BL-Touch Sensor Unterstützung gibt, die von David Ramiro und Marco Niedda zur Verfügung gestellt wird. Ich verwende diese, da ich mein Druckbett mit einem BL-Touch Sensor ausrichte..

In Zusammenhang mit dem Titan Extruder sollte bei der sehr empfehlenswerten, da dadurch bedeutend leisere Betriebsgeräusche entstehen, Umrüstung auf TMC 2208 Steppertreiber folgendes in der configuration.h geändert werden:
#define INVERT_E0_DIR true

Die Kalibrierung incl. Geschwindigkeitsoptimierung habe ich entsprechend Michael Laws Anleitung für den Ender 3 durchgeführt, ich empfehle, seine G-Code Dateien einfach auszudrucken, dann spart man sich doch einiges an Fummelei mit dem Slicer.


HINWEIS:
Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen!

Diverser Tüddelkram zu Marlin

Noch ein kleiner Merkzettel für mich und wer es sonst noch brauchen kann, wie man jeden 3D Drucker den AnyCube i3 MEGA ein bisschen tieferlegt genauer einstellt.

  • Neben der richtigen Temperatur ist auch das Kalibrieren der Maße, die der Drucker fabriziert, wichtig. Wie man die Kalibrierergebnisse in Richtung dauerhafter Korrektur des Bettlevelings verarbeitet, verraten die Plastikjunies.

  • Zum Anschauen: Ein G29 Plotter, der die Ergebnisse einer Bettkalibrierung grafisch aufbereitet.

  • Ebenfalls wichtig ist das "PID Tuning", um konstante Temperaturen im Extruder bzw. Hotbed zu bekommen. Hier gibt es eine ausführliche Anleitung bei 3d Drucktipps. In dem Zusammenhang ist auch der Tipp von Panduin super.

  • Grundlagenarbeit: Es muss nicht gleich in 1st Layer Porn ausarten, trotzdem: Die Verbindung der 1. Drucklage zum Druckbett ist für die Haftung des Druckes entscheidend. Hier gibt es Tipps für die Einstellung mit dem Slicer Simplify3D.

  • Troubleshooting: Die Übersicht über diverse Fehler beim Drucken ist bei Simplify3D in Englisch sehr hilfreich.

  • Mit
    curl -k -H "X-Api-Key: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" -F "select=false" -F "print=false" -F "file=@[output_filepath]" "http://IPADDRESS:PORT/api/files/local" {STRIP "; postProcessing"} 
    kann direkt aus Simplify3D auf den OctoPrint Server gedruckt werden. Dabei sind natürlich der API Key statt den "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" einzufügen, ebenso die URL, unter der OctoPrint erreichbar ist. Wenn man bei "select" und / oder "print" statt "false" den Wert "true" angibt, druckt Octoprint automatisch los. Nicht ändern sollte man die Variable hinter "file" 8-)

  • Flusskontrolle: "Viele quälen sich unnötig lange durch unzählige Versuche, die richtige Einstellung für die Fördermenge (den so genannten “Flow”) ohne Extruder kalibrieren im Slicer einzustellen und stoßen dann trotzdem immer wieder auf das Problem der “over-extrusion” oder “under-extrusion”." Hier gibt es eine Schritt für Schritt Anleitung, mit deren Hilfe sich auch dieses (mögliche) Problem lösen lässt.

  • Zum auswendig Lernen: Der komplette Befehlssatz unter Marlin.

  • TBC...

Zu meinem YouTube Kanal, mit aktuellen Drucken.

AnyCubic i3 MEGA unter Marlin mit dem BLTouch leveln

The better the Leveling the better the Print:
Mal eben eine neue Ladeschale und Halterung für das Telefon ausgedruckt
Träger: Bowden X-Carriage for AnyCubic i3 MEGA by Audisis
Am leuchten ist der BLTouch
Mal ein kleiner Merkzettel für mich und wer es sonst noch brauchen kann, wie man den AnyCube i3 MEGA unter Marlin mit dem BLTouch oder einem der günstigeren Kopien mittels G- und M- Befehlen die Druckdüse in einen definierten Abstand zum Druckbett bringt, auf deutsch: levelt. Eingaben sind Rot, Kommentare hinter dem Semikolon nicht eingeben. Ich habe die Ausgaben auf das Wesentliche gekürzt. Vorab: Das Z-Probe Offset bedeutet die Differenz zwischen Auslösepunkt des BL Touch und der Düsenspitze.
Send: M851 ; Z Probe Offset anzeigen lassen
Recv: echo:Probe Z Offset: -2.02
Recv: ok
[...]
Send: M851 Z0 ; Z Probe Offset auf Null setzen
Recv: ok
[...]
Send: G28 ; Nullpunkt anfahren
[...]
Recv: echo:busy: processing
Recv: X:-5.00 Y:0.00 Z:0.00 E:0.00 Count X:-400 Y:0 Z:0
Recv: ok
[...]
Send: G1 Z1 X110 Y110 F2000 ; In die Mitte des Druckbettes fahren
Recv: ok
[...]
Send: G92 Z0 ;
Recv: X:110.00 Y:110.00 Z:0.00 E:0.00 Count X:8800 Y:8800 Z:0
Recv: ok
[...]
Send: G30 X110 Y110
[...]
Recv: Bed X: 110.00 Y: 110.00 Z: 2.08
Recv: X:77.00 Y:105.00 Z:10.00 E:0.00 Count X:6160 Y:8400 Z:4000
Recv: ok
[...]
Recv: ok
[...]
Send: G1Z-0.1 ; Bis 0.05mm / ein Kassenbon zwischen Düsenspitze und Bett passt. BTW: Ich empfehle als Metaller natürlich, eine Fühlerlehre, kann man auch für andere Sachen verwenden.
Recv: ok
[...]
Send: G1Z-0.1 ; Bis 0.05mm / ein Kassenbon zwischen Düsenspitze und Bett passt.
Recv: ok
[...]
Send: G1Z-0.1 ; Bis 0.05mm / ein Kassenbon zwischen Düsenspitze und Bett passt.
[...]
Send: G92 Z0 ; Neuer Nullpunkt an diese Stelle setzen
Recv: X:110.00 Y:110.00 Z:0.00 E:0.00 Count X:8800 Y:8800 Z:0
Recv: ok
[...]
Send: G30 X110 Y110 ; Offset ausgeben. Wert bei der 1. Z-Anzeige (hier in GRÜN angezeigt) merken
[...]
Recv: echo:busy: processing
Recv: Bed X: 110.00 Y: 110.00 Z: 2.08 ; Diesen Z-Wert merken!
Recv: X:77.00 Y:105.00 Z:10.00 E:0.00 Count X:6160 Y:8400 Z:4000
Recv: ok
[...]
Send: M851 Z-2.08 ; Neues Offset eingeben mit dem eben gemerkten Z-Weŕt
Recv: ok
[...]
Send: M500 ; Den Wert ins EEPROM speichern
Recv: echo:Settings Stored (731 bytes; crc 34074)
Recv: ok

Am besten mal den Drucker neu starten um 100% sicher zu gehen, daß er sich die neuen Offset Werte gemerkt hat. Anschließend mache ich 2-3 Kalibrierzyklen mit G28 / G29 und speichere die Werte im EEPROM mit M500:
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3 4
Recv: 0 +0.010 -0.020 -0.033 -0.020 +0.027
Recv: 1 +0.058 +0.023 +0.015 +0.040 +0.090
Recv: 2 +0.082 +0.040 +0.027 +0.058 +0.108
Recv: 3 +0.082 +0.053 +0.027 +0.065 +0.095
Recv: 4 +0.058 +0.010 -0.020 +0.003 +0.045
Recv:
Recv: X:164.00 Y:193.00 Z:12.06 E:0.00 Count X:13120 Y:15440 Z:4832
Send: M140 S0
Recv: ok
Send: M500
Recv: echo:Settings Stored (731 bytes; crc 9049)
Recv: ok

Der 2. Zyklus macht nochmal deutlich, daß mehrfache Kalibrierung nicht schadet:
Recv: Bilinear Leveling Grid:
Recv: 0 1 2 3 4
Recv: 0 +0.020 -0.017 -0.030 -0.025 +0.038
Recv: 1 +0.063 +0.038 +0.007 +0.055 +0.092
Recv: 2 +0.098 +0.043 +0.043 +0.063 +0.118
Recv: 3 +0.092 +0.055 +0.030 +0.075 +0.098
Recv: 4 +0.063 +0.013 -0.017 +0.013 +0.043
Recv:
Recv: X:164.00 Y:193.00 Z:12.06 E:0.00 Count X:13120 Y:15440 Z:4832
Send: M140 S0
Recv: ok
[...]
Send: M500
Recv: echo:Settings Stored (731 bytes; crc 34326)
Recv: ok
[...]

Das sollte dann aber auch reichen, denn "wer viel misst, misst Mist". ;-) Ich übermittle dem Drucker dann vor jedem Druck die neuen Einstellungen, die er  dann entsprechend mit dem Druckauftrag verrechnet. Da ich immer über octoprint drucke, sieht das bei mir so aus:
G21 ; Wir verwenden Millimeter
G90 ; Absolute Positionierung...
M82 ; ... auch für den Steppermotor am Extruder
M107 ; Lüfter aus
G28 X0 Y0 ; Referenzpunkte XY anfahren
G28 Z0 ; Referenzfahrt auch für Z
G1 Z15.0 F{travelspeed} Z Achse 15 mm anheben
G92 E0 ; Extruder auf 0 setzen
G1 F200 E3 ; Extruder soll eine 3mm lange Wurst auspressen
G1 E0 ; und stoppen...
G1 F{travelspeed} ;
G28; Nullpunkte / Home anfahren
G29; Auto Bed Levelling (ABL) anwerfen
M500; Werte in Firmware / EEPROM speichern
M420 S1; BLTouch aktivieren

Es geht natürlich auch ohne octoprint, falls man direkt vom Slicer aus druckt. Auf jeden Fall sollte man sich für eine Methode entscheiden, nicht, daß nachher 2x gelevelt wird...

HINWEIS:
Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen, insbesondere an die OctoPrint Community!

Keep on Coding Printing!

Inoffizielles TWRP Update für OnePlus One bei verschlüsseltem Dateisystem

Ich hatte vor einiger Zeit schon einmal von einer Lösungsmöglichkeit berichtet, wie man mit dem TWRP Recovery vom Team Win Recovery Project unter CyanogenMod auf dem OnePlus One verschlüsselte Partitionen entschlüsseln kann. Ein TWRP Bug hatte das verhindert.

Seit dem Update auf CyanogenMod 13.x bestand das Problem erneut, auch bei dem von mir wegen seiner Fixes an der Kamera und dem Display eingesetzten Variante von Sultan.

Zwischenzeitlich hatte ich deshalb einen 14 tägigen Ausflug zu Dirty Unicorn gewagt. Dort klappte das Entschlüsseln und auch sonst hat DU durchaus etwas, weil es so ziemlich sämtliche Verbesserungen, die alternative Betriebssysteme so mit sich bringen, unter einer Haube vereint.

Nur eine Woche nach dem Umstieg hat jedoch der offizielle Projektentwickler für das bacon Device die weitere Arbeit an diesem Zweig beendet. Tja, das OPO hat halt auch schon 2 Jahre auf dem Buckel. Zwar gibt es auch hier inoffizielle Weiterentwicklungen wie zum Beispiel von Иван Блинов (blinoff82), allerdings hatte das Vorgehen nicht unbedingt dazu beigetragen, mein Vertrauen in Dirty Unicorn zu stärken.

Umso erfreuter war ich deshalb, dass sich ein Entwickler des TWRP Problems angenommen hatte und noch vor der Veröffentlichung des nächsten offiziellen Releases einen Patch und ein Binary veröffentlicht hat. Dieses kann man hier herunter laden, installiert wird es wie immer:

adb reboot bootloader

 

Das OnePlus ist jetzt im fastboot mode. Das TWRP Image sollte bereits herunter geladen sein und im selben Verzeichnis wie adb und fastboot liegen und in twrp.img umbenannt worden sein. Jetzt nur noch:

 

fastboot flash recovery twrp.img

eingeben und mit

fastboot reboot

das Gerät neu starten.

Eine notwendige Anmerkung: Das Anwenden dieses Tipps erfolgt vollständig auf eigene Gefahr!

Makrotest

Für ansprechende Fotos von Pornopeter (RIP) und Don Juan usw. braucht man ein Makroobjektiv:
"Makros sollten dazu gebaut sein, auch im Maßstab um 1:1 bezogen auf KB-Format eine entsprechende optische Leistung zu bringen. Konstruktiv ist es aber schwierig eine hohe Leistung über den gesamten Einstellbereich von Unendlich bis in den absoluten Makrobereich sicherzustellen. Weil viele Untersuchungen dies nicht zeigen, wurde hier nun ein Test durchgeführt speziell bei diesem Maßstab."
Ein empfehlenswerter und ausführlicher Makrotest bei Nature Nature Plus

Canon's Firmware Updateseite

Bevor ich es vergesse: Hier gibt es Firmwareupdates für Canon's Spiegelreflexkameras. Einige Kameramodelle aus der Powershot Serie lassen sich bekanntlich und auf eigene Gefahr mit einem Firmwarehack aufbohren. Ältere Spiegelreflexe, wie die 300D kann man mit dem bekannten "Russenhack" aufmöbeln.