FHEM Forum

FHEM => Frontends => fronthem / smartVISU => Thema gestartet von: GammaTwin am 31 Dezember 2018, 12:00:18

Titel: fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: GammaTwin am 31 Dezember 2018, 12:00:18
Jetzt die Temperaturen draußen kälter werden, ist mit aufgefallen, dass in der smartVISU keine Minuszeichen angezeigt werden.

FHEM
Readings
         state -4.10 °C


fronthem
SunTracer.Temp:
         converter  NumDisplay
         device     AussenTempMin
         reading    state
         set       
         type       item


Habt Ihr auch das Problem?
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: smai am 31 Dezember 2018, 13:49:17
Welches Widget nutzt du für die Anzeige und welche Version der smartVISU?
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: GammaTwin am 31 Dezember 2018, 15:46:52
smartVisu 2.9

{{ basic.float('SunTracer.Temp1', 'SunTracer.Temp', 'temp') }}

de.ini
temp = "%01,1f °C"
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: smai am 01 Januar 2019, 21:56:05
Ich kann das in smartVISU direkt nicht nachvollziehen. Das Problem liegt also wahrscheinlich entweder auf Seite von fronthem oder am Treiber.
Damit bin ich leider der falsche um weiterhelfen zu können.
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: herrmannj am 01 Januar 2019, 22:31:13
NumDisplay kann eigentlich. in der browser console was zu sehen ? Direct geht an gleicher Stelle geht ? Evtl alte fhconverter Datei ?
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: Gigafix am 02 Januar 2019, 01:35:59
Ich hatte das Problem auch mal - bin mir aber nicht mehr sicher was die Lösung war.
Teste mal mit einem geschützten Leerzeichen &nbsp sieht bei mir so aus:

Garten:  
{{ basic.float('Aussen.temperatur', 'Aussen.temperatur.Luft', ' °C') }}


Gruß Gigafix
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: GammaTwin am 02 Januar 2019, 10:58:12
@Gigafix:
Das Leerzeichen brachte keinen Erfolg

@herrmannj/smai:
Ich habe vor einiger Zeit am fronthem gemäß "fronthem + Plots + status.log für smartVISU 2.9" (https://forum.fhem.de/index.php/topic,86584 (https://forum.fhem.de/index.php/topic,86584)) Dinge geändert. Die Diagramme aus der mySQL-DB lassen sich seither darstellen.
Ich habe meine alte Version "smartVISU 2.8" nochmal aktiviert und auch dort fehlt das Minus. Ich kann allerdings nicht sagen, ob es letztes Jahr noch da war  ;)
Die fhconverter.pm entspricht der https://github.com/herrmannj/fronthem/tree/master/FHEM (https://github.com/herrmannj/fronthem/tree/master/FHEM) - ist also 4 Jahre alt. Gibt es eine neuere?

Die Stelle aus der fhconverter:
sub NumDisplay(@)
{
  my ($param) = @_;
  my $cmd = $param->{cmd};
  my $gad = $param->{gad};
  my $gadval = $param->{gadval};

  my $device = $param->{device};
  my $reading = $param->{reading};
  my $event = $param->{event};
 
  my @args = @{$param->{args}};
  my $cache = $param->{cache};

  if ($param->{cmd} eq 'get')
  {
    $event = ($reading eq 'state')?main::Value($device):main::ReadingsVal($device, $reading, '0');
    $param->{cmd} = 'send';
  }
  if ($param->{cmd} eq 'send')
  {
    return "NumDisplay converter got [$event] from $device, $reading but cant interpret it as a number" unless $event =~ /\D*([+-]{0,1}\d+[.]{0,1}\d*).*?/;
    $event = $1;
my $format = (@args)?$args[0]:"%.1f";
    $param->{gad} = $gad;
$param->{gadval} = sprintf($format, $1);
$param->{gads} = [];
    return undef;
  }
  elsif ($param->{cmd} eq 'rcv')
  {
    return 'done'; # only a display, no set
  }
  elsif ($param->{cmd} eq '?')
  {
    return 'usage: TBD!!!';
  }
  return undef;
}
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: GammaTwin am 02 Januar 2019, 22:13:41
Ich habe ein ein Userreading angelegt, mit dem Code aus der fhconverter.pm.

userReadings
Test { my $test = ReadingsVal( $name, 'state', '' ); return unless $test =~ /\D*([+-]{0,1}\d+[.]{0,1}\d*).*?/; $test = $1; }


Ich erhalte ebenfalls eine Zahl ohne Minus.
Readings
Test 4.10
state -4.10 °C


Ist das bei Euch auch so?
Könnte das jemand ausprobieren?

PS: Ich habe keine Ahnung was /\D*([+-]{0,1}\d+[.]{0,1}\d*).*?/ bedeutet  :o
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: herrmannj am 02 Januar 2019, 22:26:45
Ja, ich schau mir das morgen an.

Das ps ist eine regex um Dezimalzahlen zu filtern, die kann aber Vorzeichen.
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: Chris46 am 03 Januar 2019, 07:46:52
Reicht nicht dieser Regex: ([+-]{0,1}\d+[.]{0,1}\d*) oder habe ich ich nicht alle Fälle betrachtet? Auf jeden Fall wird mit \D* das + oder - davor weggeschnitten.
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: GammaTwin am 03 Januar 2019, 09:07:46
Es würde funktionieren - in meinem Fall  :D

userReadings
Test { my $test = ReadingsVal( $name, 'state', '' ); return unless $test =~ /\D*([+-]{0,1}\d+[.]{0,1}\d*).*?/; $test = $1; }
Test2 { my $test = ReadingsVal($name, 'getG1', ''); return unless $test =~ /([+-]{0,1}\d+[.]{0,1}\d*)/; $test = $1; }


Ich erhalte ebenfalls eine Zahl ohne Minus.
Readings
Test 4.30
Test2 -4.30
state -4.30 °C
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: herrmannj am 03 Januar 2019, 10:33:56
Das "\D" ist da um Fälle wie "T: -1.5" zu behandeln und die "-1.5" zu extrahieren.

Probiere mal diese regex bitte:
^[^-\d]*(-?[0-9]\d*(?:\.\d+)?).*$
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: Chris46 am 03 Januar 2019, 10:41:43
"T: -1.5" funktioniert auch mit dem Regex:

([+-]{0,1}\d+[.]{0,1}\d*)

-1.5

Hingegen liefert
^[^-\d]*(-?[0-9]\d*(?:\.\d+)?).*$
T: -1.5

Beides mit folgendem Link getestet: https://regex101.com/
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: herrmannj am 03 Januar 2019, 10:58:14
Der converter nimmt die erste capture group, nicht das full match.

Aber Du hast Recht, da geht dann beides. Im Zweifel ist einfach besser, also Deine. :)

eingecheckt.
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: GammaTwin am 03 Januar 2019, 11:10:28
Sehr schön :) Es funktioniert!

Könntest Du auch noch "NumDisplay" korriegieren?
Titel: Antw:fronthem / smartVISU / fehlendes Minus mit NumDisplay und NumDirect
Beitrag von: herrmannj am 03 Januar 2019, 11:24:18
yes. Danke @all