Firmata FRM_IN device wird im Floorplan nicht richtig angezeigt

Begonnen von golem, 19 Mai 2014, 09:11:23

Vorheriges Thema - Nächstes Thema

golem

Hallo,

ich habe versucht ein Device vom Type Frm_In im floorplan als Icon darzustellen. Das funktioniert auch problemlos. Da aber dea Device keine Lampe ist habe ich versucht nur im Floorplan andere icon als in WEB zu benutzen.
Also habe ich folgendes Attribut am FRM_IN device gesetzt
attr in3 fp_image pumpe.{state}.png
Mit dem Erfolg, das in Floorplan jetz ein Icon mit dem Namen .../fhem/images/default/pumpe.Initialized.png angezeigt werden soll.
ich hätte eher erwartet, das:
.../fhem/images/default/pumpe.on.png
.../fhem/images/default/pumpe.off.png
angezeigt werden soll.
Was muss ich eingeben, damit das funktioniert.

Gruß Denis
Pi - Max-Lan - 8x max Ht -3x Max WT - Max Fk -modbus umg103- 2x Arduino mit Firmata Ethernet- ws300 - 433Mhz Sender Empfänger - 7x 1wire ds1820

UliM

Kein Attribut nutzen. Stattdessen ein Ordner unter images/default anlegen mit selbem Namen wie der floorplan, dort die floorplan-spezifischen icons reinpacken.
Rereadicons nicht vergessen.
Viel Erfolg,
Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

golem

hallo Uli,

habe ich gerade getestet,
unter .../images/default/ den Ordner Heizung angelegt, darein die Icons pumpe.on.pgn und pumpe.off.png kopiert.
Die Dateien dann in on.pgn und off.png umbenannt.
set web rereadicons
Floorplan Heizung angesehen und  :( ich sehe die "normalen" Icons aber nicht die speziellen...

Denis
Pi - Max-Lan - 8x max Ht -3x Max WT - Max Fk -modbus umg103- 2x Arduino mit Firmata Ethernet- ws300 - 433Mhz Sender Empfänger - 7x 1wire ds1820

golem

Habe mir fürs erste selbst geholfen...

in der 95_FLOORPLAN.pm habe ich ab Zeile 512 folgende Änderung eingebaut.


my $fp_reading = AttrVal("$d", "fp_reading", undef);                                       # floorplan-independent reading
        if ($fp_reading){ 
        }else{
            $fp_reading = "state";
        }     
        my $state = ReadingsVal($d, $fp_reading, undef);                                 
        if ($fp_image) {
     $fp_image =~ s/\{state\}/$state/;                                                       # replace {state} by actual device-status
            $txt =~ s/\<img\ src\=\"(.*)\"/\<img\ src\=\"\/fhem\/icons\/$fp_image\"/;           # replace icon-link in html
            $txt =~ s/\<img\ (.*) src\=\"(.*)\"/\<img\ $1 src\=\"\/fhem\/images\/default\/$fp_image\"/;           # replace icon-link in html (new)
        }
        if ($fp_fpimage) {
            $fp_fpimage =~ s/\{state\}/$state/;                                                 # replace {state} by actual device-status
            $txt =~ s/\<img\ src\=\"(.*)\"/\<img\ src\=\"\/fhem\/icons\/$fp_fpimage\"/;         # replace icon-link in html
            $txt =~ s/\<img\ (.*) src\=\"(.*)\"/\<img\ $1 src\=\"\/fhem\/images\/default\/$fp_fpimage\"/;     # replace icon-link in html (new)
        }


damit kann jedes reading über das Userattribut fp_reading für die Icons herangezogen werden.

evt. kann das ja so übernommen weden

Gruß Denis
Pi - Max-Lan - 8x max Ht -3x Max WT - Max Fk -modbus umg103- 2x Arduino mit Firmata Ethernet- ws300 - 433Mhz Sender Empfänger - 7x 1wire ds1820