<div dir="ltr"><div>I agree with earlier posters, such documentation can help future tinkerers. There is probably more than just one to hold the hand and walk through the ordeals :)<br></div><div><br></div><div>Perhaps a new page at <a href="https://github.com/networkupstools/nut/wiki">https://github.com/networkupstools/nut/wiki</a> can be a good location...</div><div><br></div><div>Jim</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 16, 2024 at 1:29 PM Bill Gee <<a href="mailto:bgee@campercaver.net">bgee@campercaver.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Kelly -<br>
<br>
As an Arduino nerd, I am interested in this!  I am sure others on the <br>
list would be interested.  If nothing else, it would be nice to have <br>
some documentation in the archives.<br>
<br>
I assume you set it up as an online system rather than a standby system. <br>
  Right?  If true, then the choice of inverter is fairly critical.  It <br>
has to be bomb-proof reliable.<br>
<br>
What did you choose for battery voltage?  What is the power capacity of <br>
the inverter?<br>
<br>
Which Arduino did you use?  All of my Arduino projects use the Pro Mini, <br>
though it would be quite easy to get some other model for this.<br>
<br>
Thanks -<br>
===============<br>
Bill Gee<br>
<br>
On 5/15/24 20:11, Kelly Byrd wrote:<br>
> I put together my own DIY UPS,  it's a RV charger/converter, an <br>
> inverter, and some batteries. I use an Arduino and the HIDPowerDevice <br>
> library (<a href="https://github.com/abratchik/HIDPowerDevice" rel="noreferrer" target="_blank">https://github.com/abratchik/HIDPowerDevice</a> <br>
> <<a href="https://github.com/abratchik/HIDPowerDevice" rel="noreferrer" target="_blank">https://github.com/abratchik/HIDPowerDevice</a>>) to get it to talk to NUT. <br>
> Been working great for months!<br>
> <br>
> The Arduino is connected to two modules:<br>
> * AC detection circuit to measure mains power on/off<br>
> * Voltage divider and an external ADC to get a reasonably good DC <br>
> voltage level for the battery which I turn into the a charge percentage.<br>
> <br>
> This uses the USBHID driver in NUT and "just works" as long as you're <br>
> using NUT 2.8.2 or later. I used the example code in the HIDPowerDevice <br>
> library as a starting point for running on my Arduino.<br>
> <br>
> I can share more specifics about the Arduino side of things off list if <br>
> you want, the NUT side of things is pretty boring and normal.<br>
> <br>
> On Wed, May 15, 2024 at 3:27 PM Kiril Zyapkov via Nut-upsuser <br>
> <<a href="mailto:nut-upsuser@alioth-lists.debian.net" target="_blank">nut-upsuser@alioth-lists.debian.net</a> <br>
> <mailto:<a href="mailto:nut-upsuser@alioth-lists.debian.net" target="_blank">nut-upsuser@alioth-lists.debian.net</a>>> wrote:<br>
> <br>
>     Hello,<br>
> <br>
>     I found out about NUT just days ago while searching for a solution<br>
>     for my home setup. After some digging through the interwebs, I come<br>
>     to you with questions.<br>
> <br>
>     I'm putting together a DIY 12V UPS, very similar to what this guy did:<br>
> <br>
>     [1]<br>
>     <a href="https://baldpenguin.blogspot.com/2015/10/diy-12v-ups-for-home-network-equipment.html" rel="noreferrer" target="_blank">https://baldpenguin.blogspot.com/2015/10/diy-12v-ups-for-home-network-equipment.html</a> <<a href="https://baldpenguin.blogspot.com/2015/10/diy-12v-ups-for-home-network-equipment.html" rel="noreferrer" target="_blank">https://baldpenguin.blogspot.com/2015/10/diy-12v-ups-for-home-network-equipment.html</a>><br>
> <br>
>     The objective is to keep a bunch of mini PCs and network gear online<br>
>     for as long as the battery lasts and then provide a mechanism for a<br>
>     graceful shutdown of my NAS and other appliances for which cutting<br>
>     power would not be healthy. The project above is missing the<br>
>     "connected" part. I want to get mine to play with NUT nicely. Other<br>
>     prior art is this project:<br>
> <br>
>     [2] <a href="https://github.com/xm381/Raspberry-Pi-UPS" rel="noreferrer" target="_blank">https://github.com/xm381/Raspberry-Pi-UPS</a><br>
>     <<a href="https://github.com/xm381/Raspberry-Pi-UPS" rel="noreferrer" target="_blank">https://github.com/xm381/Raspberry-Pi-UPS</a>><br>
> <br>
>     Mentioned in a previous thread here:<br>
> <br>
>     [3]<br>
>     <a href="https://alioth-lists.debian.net/pipermail/nut-upsuser/2018-August/011198.html" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/pipermail/nut-upsuser/2018-August/011198.html</a> <<a href="https://alioth-lists.debian.net/pipermail/nut-upsuser/2018-August/011198.html" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/pipermail/nut-upsuser/2018-August/011198.html</a>><br>
> <br>
>     A valid approach -- emulates an existing protocol on an arduino.<br>
> <br>
>     Are there other similar projects that you know of? I found plenty of<br>
>     "DIY UPS" projects, but none were "smart".<br>
> <br>
>     I am able to put together firmware for some micro which will take<br>
>     care of measuring voltages, currents, possibly also turn on/off<br>
>     loads, serial or USB or IP are options. Not sure yet what hardware<br>
>     features I'll put together, but this depends somewhat on the<br>
>     approach for getting this thing integrated with NUT. PSUs and<br>
>     batteries are already on the way, and my junk drawers have most<br>
>     other parts I may need.<br>
> <br>
>     So, options found so far:<br>
> <br>
>     * Use genericups. Least favorite option, very limited features<br>
> <br>
>     * Use the same approach as [2]. If I were to go that route -- which<br>
>     is the best protocol to pick for emulation? I'm looking for<br>
>     something simple, extensible/flexible and well-documented.<br>
> <br>
>     But what I really wish was possible was the ability to describe my<br>
>     device in some format, feed it to a generic driver in NUT and<br>
>     profit. I see some efforts have been made in this direction, most<br>
>     notably:<br>
> <br>
>     [4]<br>
>     <a href="https://github.com/networkupstools/nut/wiki/Data-Mapping-File-(DMF)" rel="noreferrer" target="_blank">https://github.com/networkupstools/nut/wiki/Data-Mapping-File-(DMF)</a><br>
>     <<a href="https://github.com/networkupstools/nut/wiki/Data-Mapping-File-(DMF)" rel="noreferrer" target="_blank">https://github.com/networkupstools/nut/wiki/Data-Mapping-File-(DMF)</a>><br>
> <br>
>     What is the state there? Is it usable for USB HID? Or, how hard<br>
>     would it be to make it usable? Even a modbus description will do --<br>
>     implementing the modbus server (yes, server, I'm being<br>
>     politically-correct) over serial or even TCP is easy, if only there<br>
>     was a way to dump a CSV with register descriptions in some magical<br>
>     driver...<br>
> <br>
>     And yet another approach which comes to mind is to implement my<br>
>     driver as an external executable. This may be completely unfeasible<br>
>     and stupid, and please let me know if it is. But, from what I<br>
>     gather, drivers run in their own process and talk to the daemon via<br>
>     a UNIX socket. Why not make it possible for the driver to be just<br>
>     any executable, built/deployed outside of the NUT codebase? The<br>
>     socket protocol seems simple enough, and this will allow for ...<br>
>     creativity. It could be implemented in any language (including<br>
>     scripting languages) and need not depend on anything NUT-specific,<br>
>     other than maybe some common CLI interface and/or configuration.<br>
> <br>
>     I'm hoping the NUT masters will have some insight. Thanks for<br>
>     working on this!<br>
> <br>
>     Cheers,<br>
>     Kiril<br>
>     _______________________________________________<br>
>     Nut-upsuser mailing list<br>
>     <a href="mailto:Nut-upsuser@alioth-lists.debian.net" target="_blank">Nut-upsuser@alioth-lists.debian.net</a><br>
>     <mailto:<a href="mailto:Nut-upsuser@alioth-lists.debian.net" target="_blank">Nut-upsuser@alioth-lists.debian.net</a>><br>
>     <a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser</a><br>
>     <<a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser</a>><br>
> <br>
> <br>
> _______________________________________________<br>
> Nut-upsuser mailing list<br>
> <a href="mailto:Nut-upsuser@alioth-lists.debian.net" target="_blank">Nut-upsuser@alioth-lists.debian.net</a><br>
> <a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser</a><br>
<br>
_______________________________________________<br>
Nut-upsuser mailing list<br>
<a href="mailto:Nut-upsuser@alioth-lists.debian.net" target="_blank">Nut-upsuser@alioth-lists.debian.net</a><br>
<a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser" rel="noreferrer" target="_blank">https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser</a><br>
</blockquote></div>