[gelöst] ReadingsGroup - Einheit eines Readings abschneiden

Begonnen von Mitch, 10 Oktober 2014, 12:01:31

Vorheriges Thema - Nächstes Thema

Mitch

Ich bin langsam am verzweifeln  :-[
Ich möchte in einer ReadingsGroup die EInheit abschneiden, weil ich dauernd Fehler im Log habe.
Es sind Stromverbrauchswerte von drei Fritz DECT 200, die hinter dem Wert noch die EInheit (W) stehen haben.

Ich habe mit dem $VALUE gespielt und hier rumgesucht, aber leider nichts gefunden, was funktioniert.

Im Moment habe ich unter valueFormat (wieder) %.1f Watt

Das Reading sieht so aus: 0.00 W

Die Fehlermeldung so: PERL WARNING: Argument "0.00 W" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 612
FHEM im Proxmox Container

justme1968

#1
das geht zum beispiel so:{[split(" ", $VALUE)]->[0] ." Watt"}oder{if( $VALUE =~ m/([\d.]*)/ ) {return "$1 Watt"; } return $VALUE;}

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

Danke Andre, der zweite Code lässt zumindest den Fehler verschwinden.

Allerdings zweigt mir die ReadingsGroup jetzt nur noch einstellig an und das auch noch falsch?
Aktuell habe ich ein Reading in einer Fritz 546 von 230 Watt und die ReadingsGroup zeigt 5 Watt??
FHEM im Proxmox Container

justme1968

im zweiten beispiel war eine klammer falsch.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Mitch

FHEM im Proxmox Container

Wondermusic

#5
Hallo zusammen,

ich bin relativ neu in der Materie und noch nicht ganz so erfahren wo ich nach was suchen soll und hoffe hier einen kleinen Gedankenanstoß zu bekommen. ;)

Ich habe eine ähnliche Fehlermeldung in meinen Logs drin:
PERL WARNING: Argument "0.00 W" isn't numeric in numeric lt (<) at (eval 11008) line 1.
PERL WARNING: Argument "0.00 W" isn't numeric in numeric lt (<) at (eval 11166) line 1.
PERL WARNING: Argument "0.00 W" isn't numeric in numeric lt (<) at (eval 11328) line 1.


Leider habe ich nicht die geringste Idee wo ich eines der beiden Programmzeilen einfügen soll.
Die Meldung selber dürfte durch dieses Define ausgelöst werden:
define SteckdoseHTPC_aus at +*00:15:00 { if (!$wday == 5 || !$we) {if (Value("Rene_Handy") eq "absent") { if (ReadingsVal("ug_bar_steckdose","power","") < 20) {fhem ("set ug_bar_steckdose off");; }}}}

Dies tritt in Verbindung mit einem AVM PowerLine- Adapter 546e auf.
Könnt Ihr mir eventuell ein wenig auf die Sprünge helfen?

Gruß,
Richy
RPi 3B+ FHEM-Server mit HM-MOD-RPI-PCB
RPi2 mit HM-MOD-RPI-PCB
HM-CFG-LAN
RPi 4 mit ioBroker
>100 HM Sensoren & Aktoren, div. ESP8266 via mqtt, ems-esp

justme1968

ich weiss zwar nicht was das in deinem fall mit readingsGroup zu tun hat :)...

das problem ist das dein reading nicht nur zahlen enthält sondern auch die einheit und du dann beim vergleich eine warnung bekommst. um das zu vermeiden musst du die einheit abschneiden.

das geht in dem du entweder ReadingNum statt ReadingVal verwenderst oder z.b. auch so:define SteckdoseHTPC_aus at +*00:15:00 { if (!$wday == 5 || !$we) {if (Value("Rene_Handy") eq "absent") { if ((split(' ',ReadingsVal("ug_bar_steckdose","power","")))[0] < 20) {fhem ("set ug_bar_steckdose off");; }}}}

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Wondermusic

Ich stimme Dir vollkommen zu das es nichts mit ReadingsGroup zu tun hat, aber die Fehlermeldung ist sehr ähnlich und es handelt sich auch um einen PowerLine- Adapter.
Alle anderen ähnlichen Beiträge hier im Forum haben mich leider auch nicht weiter gebracht, also  musste ich mir einen Beitrag aussuchen in dem ich schreiben konnte. ;)

Genau das war es! Vielen Dank für die Hilfe! :)

Gruß,
Richy
RPi 3B+ FHEM-Server mit HM-MOD-RPI-PCB
RPi2 mit HM-MOD-RPI-PCB
HM-CFG-LAN
RPi 4 mit ioBroker
>100 HM Sensoren & Aktoren, div. ESP8266 via mqtt, ems-esp