GreenCell UPS in Domoticz

Onlangs heb ik een GreenCell UPS in de vorm van een stekkerblok gekocht. Ik heb hem speciaal voor m'n raspberry PI's gekocht, de internet router (in bridge) en mijn eigen router + access point. Het is niet dat ik zó graag internet wil houden bij een lokale stroomstoring, maar 1 van de raspberry PI's is een domotica-service en naar mate dat uitbreidt, wordt uptime wel een dingetje. Echter, na enige tijd vond ik het wel erg handig als ik die UPS remote kon uitlezen. Wat beter dan het domotica-systeem wat hij zelf in de gaten moet houden?! Dus: een UPS monitoren met domoticz! How hard can it be?

De oplossing hiertoe is dat je gebruikt moet gaan maken van de NUT-server (Network UPS Tools). Geen zorgen, dit is een lichtgewicht service. Deze koppel je aan de UPS Monitor plugin van domoticz. Het is alleen niet altijd even duidelijk waar de informatie vandaan moet komen, dus ga ik je er mee helpen.

NUT-server

  1. De meest simpele stap: sluit de stroomstekkers aan en plaats de meegeleverde USB kabel in de USB-poort. Sluit het andere uiteinde van deze kabel echter nog niet aan.
  2. Kies een monitoring node uit. In mijn geval is dit een andere raspberry PI geworden dan waar domoticz op draait. Beiden draaien Raspberry OS buster, dus ik ga alles in Linux werkend maken
  3. Log in op je monitoring node en installeer NUT:
    sudo apt-get update && sudo apt-get install nut
  4. Een beetje jammer, de installatie slaagt, maar de service start niet. Dat komt omdat de nut-server eerst geconfigureerd moet worden. Daarvoor moeten we een aantal wijzigingen maken
  5. Op je monitoring node waar nut geinstalleerd is, typ je eerst: lsusb
  6. Plug nu het nog loshangende uiteinde van de USB kabel in je monitoring node
  7. Typ wederom lsusb en kopieer (letterlijk dus) de naam van het erbij gekomen usb-device, deze heb je straks nodig
  8. Typ: cd /etc/nut
  9. Ik gebruik nano, dus typ: sudo nano nut.conf
  10. Wijzig MODE= naar MODE=netserver en sluit de file (save changes uiteraard)
  11. Op naar de volgende file, typ: sudo nano ups.conf. Deze is tricky, je moet namelijk een driver voor je device gaan opzoeken, dat kun je hier doen: https://networkupstools.org/stable-hcl.html. Heb je hem gevonden? Mooi, pak dan de letterlijke waarde uit de "Driver"-kolom. Kun je hem niet vinden? Dan moet je trial on error gaan doen tussen stap 11 en 14. Voeg nu onderaan de file die je open hebt staan het volgende toe:
    [greencell]
     driver = blazer_usb
     port = auto
     desc = "Fry's Electronics"

    Save changes en sluit het bestand. Bij 'desc' vul je overigens in wat je hebt genoteerd in stap 7
  12. Op naar de volgende file, typ: sudo nano upsd.conf. Pas hier aan hoe de nut-server bereikbaar is, dus wat de listeners zijn. Uncomment en/of vul regels aan:
    LISTEN 3493
    LISTEN 127.0.0.1 3493
    LISTEN ::1 3493

    Save changes en sluit het bestand.
  13. We moeten nog 1 bestand aanpassen, dus typ: sudo nano upsd.users. Voeg onderaan het volgende toe:
    [admin]
     password = passwordOrWhatever
     actions = SET
     instcmds = ALL
  14. De nut-server is nu geconfigureerd, maar moet nog herstart worden, dus typ: sudo systemctl restart nut-server.service. Controleer de running state met sudo systemctl status nut-server.service. Als je errors ziet als 'Cannot connect to driver', dan heb je een verkeerde driver gekozen in stap 11. Als hij netjes start kun je door met de volgende stap.
  15. Dat de service start is mooi, maar zegt nog niet alles. We hebben immers multi-purpose drivers gebruikt en we willen eerst weten wat die drivers teruggeven (m.a.w.: leidt het gebruik van deze driver tot iets zinvols wat straks naar domoticz kan?). Typ hiervoor: upsc greencell. Let op: greencell is de naam van het apparaat zoals je hem in stap 11 hebt genoemd. Als je hier zinvolle informatie terug krijgt van het device, zoals battery level, status, etc. dan ben je OK en kun je door met de configuratie van domoticz. Mocht iets niet werken, ga dan nu nog niet verder. Dit leidt tot vervuiling van/in domoticz!

Domoticz configuratie

Voor het voorbeeld maak ik geen gebruik van de Python Plugin Manager van domoticz, maar installeer ik de module handmatig

  1. Open een terminal via SSH naar domoticz en ga naar /domoticz/plugins. Typ daar: git clone https://github.com/999LV/NUT_UPS
  2. Herstart domoticz: sudo systemctl restart domoticz.service
  3. In de logs van domoticz zal je iets zien als "NUT UPS plugin geladen", daar kan vrij weinig fout aan gaan
  4. Ga nu in domoticz naar Hardware > Toevoegen en kies bij type "UPS Monitor". Klik daarna op toevoegen
  5. Vul de parameters van het apparaat in:
     Name = GreenCell UPS
     Type = UPS Monitor
     Data timeout = Not active
     UPS NUT Server IP Address = PrivateIP of NUT-server, or simply 'localhost'
     Port = 3493
     Username = Zie stap 13 (de naam in brackets, in mijn geval 'admin')
     Password = Het wachtwoord wat je in stap 13 hebt ingesteld
     UPS Nut name = Zie stap 11 (de naam in brackets, in mijn geval 'greencell')
  6. Klik "Toevoegen"
  7. Houd de domoticz logs in de gaten op fouten (die zouden er niet moeten zijn) en als je het goed gedaan hebt verschijnen binnen een paar minuten 5 apparaten onder 'Overige' in Domoticz. Let op: mocht het niet zo zijn, zorg dan dat stap 14 echt succesvol is geweest! De apparaten die deze UPS monitor introduceert zijn:
     UPS Status Mode
     UPS Charge
     UPS AC Input
     UPS Load
     UPS AC Frequency

Nu kunnen UPS'en getest en gecalibreerd worden en in mijn geval was beiden nodig. Het testen om te kijken wat mijn runtime zou zijn (overigens is dat 3,5 uur voor mijn marginale load). Je kunt hardwarematig heel simpel testen; trek de stekker uit het stopcontact en zie wat er gebeurt. Maar je kunt ook softwarematig testen en dat kan ook via de NUT-server. Strikt gezien, via de NUT-client die je meegeleverd krijgt op het moment dat je 'nut' installeert. Deze client gebruik je ook voor bijvoorbeeld calibratie en die was in mijn geval hard nodig. Op het moment dat ik een power-pull deed, ging mijn UPS naar 75%, met kabel erin zat die netjes op 100%. De accu was 100% opgeladen, maar toch zorgde een power-pull voor een directe daling van 25%. Om uit te sluiten dat dit eventueel aan Domoticz zou liggen kun je kijken wat de driver zelf teruggeeft, door middel van: upsc greencell

Dit geeft alle parameters die door je gekozen driver voor jouw UPS worden ondersteund. De miscalibratie was ook hier in zichtbaar, calibratie was dus nodig! Om de calibratie uit te voeren gebruik je de nut-server driver voor je UPS, die je in stap 11 hebt gekozen en in stap 14 hebt getest. Je moet eerst weten hoe het commando wat je zoekt heet volgens de driver, dat doe je door het volgende op de NUT-server te typen: upscmd -l greencell

De output in mijn geval is als volgt:
Instant commands supported on UPS [greencell]:
beeper.toggle - Toggle the UPS beeper
load.off - Turn off the load immediately
load.on - Turn on the load immediately
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
shutdown.stop - Stop a shutdown in progress
test.battery.start - Start a battery test
test.battery.start.deep - Start a deep battery test
test.battery.start.quick - Start a quick battery test
test.battery.stop - Stop the battery test

De 'test.battery.start.deep' is een load test incl. calibratie, dus die willen we uitvoeren. Doe dat door middel van het volgende commando:
pscmd -u username -p password greencell@localhost test.battery.start.deep

Dit proces draint de UPS tot een bepaald niveau, afhankelijk van je UPS model en daarmee wordt de UPS gecalibreerd. Dit leidt direct tot overeenkomende en vooral logische waarden in domoticz. Mocht het na de eerste keer nog steeds niet helemaal kloppen, laadt je UPS dan op tot 100% en run het commando nogmaals. Je weet dat de calibratie klaar is wanneer je upsc greencell doet en ziet bij UPS.status dat de status OL (oftewel Online) is, tijdens de calibratie verandert deze. Let op: deze statussen kunnen verschillen per merk/model.