SVP Plot als Balkendiagramm darstellen ---- FHEM Absturz

Begonnen von sash.sc, 06 August 2017, 12:21:05

Vorheriges Thema - Nächstes Thema

sash.sc

Hallo zusammen.

Ich wollte eine Werte von div. Sensoren als Balkendiagramm darstellen.
Habe schon folgende Definition für einen SatReceiver, glaube aus der FHEMWiki, in die 99 Utils.pm eingefügt.


sub Balkenanzeige($)
{
    # Zuweisung der übergebenen Variablen
    my ($val) = @_;

    # Konfiguration des maximal übergebenen Werts (hier wäre der höchste zu erwartende Wert = 3)
    my $maxValue = 3;

    # Normalisierung auf 100%-Wert
    my $percent = $val / $maxValue * 100;

    # Definition des valueStyles
    my $stylestring = 'style="'.
        'width: 200px; '.
'text-align:center; '.
'border: 1px solid #ccc ;'.
'background-image: -webkit-linear-gradient(left,red '.$percent.'%, rgba(0,0,0,0) '.$percent.'%); '.
'background-image:    -moz-linear-gradient(left,red '.$percent.'%, rgba(0,0,0,0) '.$percent.'%); '.
'background-image:     -ms-linear-gradient(left,red '.$percent.'%, rgba(0,0,0,0) '.$percent.'%); '.
'background-image:      -o-linear-gradient(left,red '.$percent.'%, rgba(0,0,0,0) '.$percent.'%); '.
'background-image:         linear-gradient(left,red '.$percent.'%, rgba(0,0,0,0) '.$percent.'%);"';

    # Rückgabe des definierten Strings
    return $stylestring;
}



Wollte den Werte von einen UV Sensor als Balkendiagramm darstellen lassen


Internals:
   CHANGED
   DEF        192.168.2.145 80 espBridge multisens_UV
   ESP_BUILD  20000
   ESP_BUILD_GIT (custom)
   ESP_BUILD_NOTES  - Mega
   ESP_NODE_TYPE_ID 17: ESP Easy Mega
   ESP_SLEEP  0
   ESP_UNIT   0
   ESP_VERSION 2
   HOST       192.168.2.145
   IDENT      multisens_UV
   INTERVAL   300
   IODev      espBridge
   LASTInputDev espBridge
   MSGCNT     18
   NAME       ESPEasy_multisens_UV
   NOTIFYDEV  global
   NR         457
   NTFY_ORDER 50-ESPEasy_multisens_UV
   PORT       80
   STATE      UV: 2.00
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    1.22
   espBridge_MSGCNT 18
   espBridge_TIME 2017-08-06 12:16:19
   READINGS:
     2017-08-06 12:16:19   Index           2.00
     2017-08-06 12:16:19   UV              2.00
     2017-08-06 12:02:25   presence        present
     2017-08-06 12:16:19   state           UV: 2.00
   helper:
     fpc        1502014319
     pm:
       Encode     1
       JSON       1
     received:
       UV         1502014579
Attributes:
   IODev      espBridge
   Interval   300
   devStateIcon {balken()}
   event-min-interval UV:900
   event-on-change-reading UV:0.25
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       10_Draussen,99_Wetter,ESPEasy
   setState   3
   userReadings Index { sprintf("%.2f",ReadingsVal("ESPEasy_multisens_UV","UV",0));;;;}


Habe dann aus folgende Thread

https://forum.fhem.de/index.php/topic,11609.msg68115/topicseen.html#msg68115

Den Code in die 99_myutils.pm eingefügt.


sub balken()
{
my $p=int(ReadingsVal("ESPEasy_multisens_UV","UV",0)*2.62);
return '<div align="bottom" style="width:68px;height:'.$p.'px;margin-top:'.(100-$p).'px;background-color:#4F81BD"></div>';
}



Folgende Definition des defStateIcon


devStateIcon {balken()}


Wenn Ich die Definition in {Balkenanzeige()} umändere, dann schmiert FHEM komplett ab.

Folgende LOG Einträge !!!


2017.08.06 12:10:12 1: devStateIcon ESPEasy_multisens_UV: Undefined subroutine &main::balkenanzeige called at (eval 909) line 1.

Unmatched ( in regex; marked by <-- HERE in m/^-webkit-linear-gradient( <-- HERE left,red$/ at ./FHEM/01_FHEMWEB.pm line 2677.
2017.08.06 12:10:29 1: BlockingInformParent (BlockingStart): Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
2017.08.06 12:10:29 1: BlockingInformParent (PRESENCE_ProcessLocalScan): Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt


Danach ließ sich FHEM nur noch über die Konsole manuell starten bzw. durch einen Reboot des PI.

Sollte dieser Thread hier an falscher Stellen stehen, bitte an die richtige Stelle verschieben !

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

rudolfkoenig

Das von Balkenanzeige() zurueckgelieferte String entspricht nicht dem, was FHEMWEB erwartet, im commandref (https://fhem.de/commandref.html#devStateIcon) steht, was erwartet wird.

Dass FHEM danach nicht automatisch gestartet wird, ist ein "Problem" des Startskripts.