OK, found some time to try to help explain how things work...
ST_Anything is a set of Arduino libraries and example sketches that allow simple integration of Arduino-style devices with Hubitat. It has support for various sensors and handles all of the GPIO scheduling, polling, etc... In order to communicate with the Hubitat hub, it uses a set of "SmartThings..." libraries that are based off of the old SmartThings ThingShield library from back in about 2014. I have since extended that library to support various LAN/WiFi devices as well.
There is also a set of Groovy Drivers for Hubitat, that implement the Composite Device driver model (i.e. Parent/Child.) The parent device handles all communications, and creates child devices as needed, as long as those 'devices' adhere to the strict naming convention as documented in the HubDuino ReadMe. Devices must be uniquely named things like "contact1", "motion1", "voltage1", "voltage2", "voltage3" . The text portion of the name, for example "voltage", is used by the parent to know what child device type to create. The numeric portion, for example "1", indicates which sequence of child devices of the same type to create/update. So, if you need two voltage measurement sensors, you would use the names "voltage1" and "voltage2".
Now...in order to transmit the value of the child devices to the hub, we need to to follow a very simple "name value" string format. It uses a simple space delimiter between the name and value. So, if you want to send data from the Arduino to the Hub, you would send a string something like "voltage1 241.3", which would cause the parent device to create/update a Child Voltage Measurement device named "voltage1" with a value of "242.3" volts.
In order to manually update the hub from within the Arduino sketch, all one needs to do is make the following call from within the loop() routine.
String strUpdate = "voltage1 241.3";
st::Everything::sendSmartString(strUpdate);
It is VERY IMPORTANT that you not update the hub very fast, or else you will bring the hub to its knees. Implement a NON-blocking mechanism (use a millis() timer) to only poll your voltage measurement device every ~60 seconds, and then send the result using the call shown above.
You need not declare a PS_Generic or PS_Voltage device in this case. Your code in the sketch is handling everything that would happen inside one of these ST_Anything 'devices'. We're just taking a short-cut.
I hope this helps explain what's going on... Please let me know if you have any questions.