Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
Re: upd(4): add more sensors (load, power..)
To:
Landry Breuil <landry@openbsd.org>, tech@openbsd.org
Date:
Thu, 21 Nov 2024 13:53:20 +0000

Download raw body.

Thread
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.


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);
 	}