replacement02Mode expression
replacement02Regex %%MENGE%%
replacement02Value
{
my $m = ReadingsNum($name,"Bestellmenge",0);
$m = $m >= 1000 ? $m : 1000;
return int(($m + 99) / 100) * 100;
}
Zitat von: betateilchen am 16 Dezember 2025, 10:55:07Vielleicht wäre auch JsonMod statt HTTPMOD die bessere Wahl.
Schon mit complete() in der readinglist gehen die Namen in Richtung Deiner Wunschvorstellung.
Wenn man die Aufbereitung der Namen dann noch ein bisschen verfeinert, lässt sich Dein Wunsch vermutlich erfüllen.defmod tj JsonMod file:///tmp/test.json
attr tj readingList complete()
setstate tj 2025-12-16 10:51:59 .computedReadings data.sensors.0.datasources.1.numberValue,data.sensors.0.datasources.1.__typename,data.sensors.0.datasources.0.name,data.sensors.0.datasources.0.__typename,data.sensors.0.datasources.1.name,data.sensors.0.datasources.0.unit,data.sensors.0.datasources.0.stringValue,data.sensors.0.datasources.0.datasourceType,data.sensors.0.type,data.sensors.0.datasources.0.id,data.sensors.0.datasources.1.stringValue,data.sensors.0.datasources.1.id,data.sensors.0.datasources.0.numberValue,data.sensors.0.datasources.1.unit,data.sensors.0.datasources.1.datasourceType,data.sensors.0.id
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.__typename Datasource
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.datasourceType SPEED_LIMIT
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.id viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.name Speed Limit
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.numberValue 50
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.stringValue 50
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.0.unit km/h
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.__typename Datasource
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.datasourceType AVERAGE_SPEED
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.id viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.name Average Speed
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.numberValue 48
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.stringValue 48
setstate tj 2025-12-16 10:51:59 data.sensors.0.datasources.1.unit km/h
setstate tj 2025-12-16 10:51:59 data.sensors.0.id viacloud:46:8bd1fb1c-b3d9-4132-83f7-1909219615b5
setstate tj 2025-12-16 10:51:59 data.sensors.0.type SPEED_SIGN
In der Datei /tmp/test.json steht der Json-Auszug, den Du oben gepostet hattest.
use JSON;
$result = 'true';
#$result = '{"text_value": 42,"text_string": "irgendwas","liste": ["A", "B", "C"],"objekt": {"x": 123.45,"y": -67.89,"aktiv": true} }';
if ( eval { $ref = JSON->new->relaxed(0)->allow_nonref(0)->decode($result) } ) {
print $ref;
} else {
print "ERROR: $@\n";
}
Dann richte mal der von Dir verwendeten KI meine Grüße aus. 😉2025.12.17 08:04:35 1: PERL WARNING: (Missing operator before
$VAR1?)
2025.12.17 08:04:35 1: PERL WARNING: Scalar found where operator expected at (eval 593) line 3, near "--
$VAR1"
2025.12.17 08:04:35 1: PERL WARNING: (Missing operator before
$VAR1?)