Index | Thread | Search

From:
Walter Alejandro Iglesias <wai@roquesor.com>
Subject:
Re: upd(4): add more sensors (load, power..)
To:
Landry Breuil <landry@openbsd.org>, stu@spacehopper.org, tech@openbsd.org
Date:
Thu, 21 Nov 2024 18:03:43 +0100

Download raw body.

Thread
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