From: Walter Alejandro Iglesias Subject: Re: upd(4): add more sensors (load, power..) To: Landry Breuil , stu@spacehopper.org, tech@openbsd.org Date: Thu, 21 Nov 2024 18:03:43 +0100 Hi Stuart, On Thu, Nov 21, 2024 at 01:53:20PM +0000, Stuart Henderson wrote: > On 2024/11/19 10:51, Stuart Henderson wrote: > > The unit for apparent power should be VA, not W. > > *untested* diff adding this. also adds some printers for SENSOR_ENERGY > which were missed when adding it previously. After applying this diff this happened: $ sysctl hw.sensors sysctl: sensors dev 0: Cannot allocate memory Besides sensorsd(8), which I have in use, timed out on boot. > > > Index: sys/sys/sensors.h > =================================================================== > RCS file: /cvs/src/sys/sys/sensors.h,v > diff -u -p -r1.37 sensors.h > --- sys/sys/sensors.h 15 Jul 2020 07:13:57 -0000 1.37 > +++ sys/sys/sensors.h 21 Nov 2024 13:52:23 -0000 > @@ -54,6 +54,7 @@ enum sensor_type { > SENSOR_ACCEL, /* acceleration (u m/s^2) */ > SENSOR_VELOCITY, /* velocity (u m/s) */ > SENSOR_ENERGY, /* energy (uJ) */ > + SENSOR_VOLTAMPS, /* apparent power (uVA) */ > SENSOR_MAX_TYPES > }; > > @@ -82,6 +83,7 @@ static const char * const sensor_type_s[ > "acceleration", > "velocity", > "energy", > + "voltamp", > "undefined" > }; > #endif /* !_KERNEL */ > Index: libexec/snmpd/snmpd_metrics/mib.c > =================================================================== > RCS file: /cvs/src/libexec/snmpd/snmpd_metrics/mib.c,v > diff -u -p -r1.9 mib.c > --- libexec/snmpd/snmpd_metrics/mib.c 22 May 2024 08:44:02 -0000 1.9 > +++ libexec/snmpd/snmpd_metrics/mib.c 21 Nov 2024 13:52:23 -0000 > @@ -2145,6 +2145,7 @@ mib_sensorvalue(struct sensor *s) > case SENSOR_VOLTS_AC: > case SENSOR_WATTS: > case SENSOR_AMPS: > + case SENSOR_VOLTAMPS: > case SENSOR_WATTHOUR: > case SENSOR_AMPHOUR: > case SENSOR_LUX: > @@ -2152,6 +2153,7 @@ mib_sensorvalue(struct sensor *s) > case SENSOR_ACCEL: > case SENSOR_VELOCITY: > case SENSOR_DISTANCE: > + case SENSOR_ENERGY: > ret = asprintf(&v, "%.2f", s->value / 1000000.0); > break; > case SENSOR_INDICATOR: > Index: sbin/sysctl/sysctl.c > =================================================================== > RCS file: /cvs/src/sbin/sysctl/sysctl.c,v > diff -u -p -r1.262 sysctl.c > --- sbin/sysctl/sysctl.c 9 Sep 2024 05:36:17 -0000 1.262 > +++ sbin/sysctl/sysctl.c 21 Nov 2024 13:52:23 -0000 > @@ -2832,6 +2832,9 @@ print_sensor(struct sensor *s) > case SENSOR_ENERGY: > printf("%.2f J", s->value / 1000000.0); > break; > + case SENSOR_VOLTAMPS: > + printf("%.2f VA", s->value / 1000000.0); > + break; > default: > printf("unknown"); > } > Index: usr.bin/systat/sensors.c > =================================================================== > RCS file: /cvs/src/usr.bin/systat/sensors.c,v > diff -u -p -r1.33 sensors.c > --- usr.bin/systat/sensors.c 8 Nov 2024 08:45:47 -0000 1.33 > +++ usr.bin/systat/sensors.c 21 Nov 2024 13:52:23 -0000 > @@ -300,6 +300,9 @@ showsensor(struct sensinfo *s) > case SENSOR_ENERGY: > tbprintf("%.2f J", s->sn_value / 1000000.0); > break; > + case SENSOR_VOLTAMPS: > + tbprintf("%10.2f VA", s->sn_value / 1000000.0); > + break; > default: > tbprintf("%10lld", s->sn_value); > break; > Index: usr.sbin/sensorsd/sensorsd.c > =================================================================== > RCS file: /cvs/src/usr.sbin/sensorsd/sensorsd.c,v > diff -u -p -r1.69 sensorsd.c > --- usr.sbin/sensorsd/sensorsd.c 8 Mar 2023 04:43:15 -0000 1.69 > +++ usr.sbin/sensorsd/sensorsd.c 21 Nov 2024 13:52:23 -0000 > @@ -708,6 +708,12 @@ print_sensor(enum sensor_type type, int6 > case SENSOR_VELOCITY: > snprintf(fbuf, RFBUFSIZ, "%4.3f m/s", value / 1000000.0); > break; > + case SENSOR_ENERGY: > + snprintf(fbuf, RFBUFSIZ, "%.2f J", value / 1000000.0); > + break; > + case SENSOR_VOLTAMPS: > + snprintf(fbuf, RFBUFSIZ, "%.2f VA", value / 1000000.0); > + break; > default: > snprintf(fbuf, RFBUFSIZ, "%lld ???", value); > } > > -- Walter