Floorplan spezielles Icon wird nicht angezeigt

Begonnen von fiedel, 05 März 2013, 09:50:24

Vorheriges Thema - Nächstes Thema

fiedel

Hallo zusammen,

in meinen Floorplans würde ich gern spezielle "endemische" ;o) Icons anzeigen, wie im Floorplan- PDF beschrieben. In FHEMWEB habe ich ein anderes Icon (Bad_oben.Open.png / Bad_oben.Closed.png), welches auch funktioniert.

Bisher glaube ich alles richtig eingerichtet zu haben und trotzdem wird das spezielle Icon nicht angezeigt. Meiner Meinung nach erzeugt FHEM nicht das "Open", oder "Closed" anstelle des "{state}" im Icon- Dateinamen. Das sieht man unten in dem Firebug- Screenshot. Ersetze ich "{state}" im Attribut mit z.B. "Open", wird das Icon im FP richtig angezeigt.

Hier meine Konfiguration:

attr global userattr devStateIcon fp_0_Hauptbildschirm fp_0_Hauptbildschirm.image icon webCmd

define Bad_oben CUL_FHTTK b7fd4f
attr Bad_oben fp_0_Hauptbildschirm 299,872,0,
attr Bad_oben fp_0_Hauptbildschirm.image BadOben.{state}.png
attr Bad_oben group Geräte
attr Bad_oben room 5_System



(siehe Anhang / see attachement)



Was könnte ich noch übersehen haben???
Liegt es ggf. am Dateinamen und es müsste "Bad_oben.{state}.png" statt "BadOben.{state}.png" heißen?
Das spezielle Icon im Icon- Ordner heißt derzeit: "BadOben.Open.png" / "BadOben.Closed.png".

Viele Grüße

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

UliM

Zitat von: fiedel schrieb am Di, 05 März 2013 09:50Was könnte ich noch übersehen haben???
Liegt es ggf. am Dateinamen und es müsste "Bad_oben.{state}.png" statt "BadOben.{state}.png" heißen?
Das spezielle Icon im Icon- Ordner heißt derzeit: "BadOben.Open.png" / "BadOben.Closed.png".
Wenn der State Oben un dnicht oben heisst, sollte der Dateiname passen.
Dateiablageort - wo liegt die Datei?  Muss nach www/images/default.
Hast Du nach dem Ablegen der Datei ein "set WEB rereadicons" gemacht?

Viel anderes fällt mir auch nicht mehr ein.
Der von Firebug angezeigte Dateiname sieht komisch aus. Welchen State hat das device zu diesem Zeitpunkt?

Gruß, Uli


RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

DC

Hi,

Falls Du keine Event Map verwendest (sprich die Statusmeldung übersetzt), solltest Du als erstes den Status im Icon-Namen klein schreiben, also bei

attr Bad_oben fp_0_Hauptbildschirm.image BadOben.{state}.png  -> BadOben.open.png, BadOben.closed.png

bzw.

attr Bad_oben fp_0_Hauptbildschirm.image Bad_Oben.{state}.png  -> Bad_Oben.open.png, Bad_Oben.closed.png
Was mich etwas irritiert ist Dein HTML Code der Seite.  Dort ist "BadOben..png" angegeben, es fehlt die Statusbezeichnung. Falls das mit Groß-/Kleinschreibung nicht korrigiert wurde, ist es vielleicht eine gute Idee, ein Update zu machen. Evtl. ist Deine 95_FLOORPLAN.pm beschädigt. Außerdem hat sich im Floorplan-Modul in den letzten Wochen einiges getan...

Noch ein Tipp: Wenn es mehr als zwei oder drei Fenster sind, die Du darstellen möchtest, verwende statt

  BadOben.{state}.png

so was wie

ico_Fenster.{state}.png oder
ico_FensterLinks.{state}.png ico_FensterRechts.{state}.png
----------
FHEM auf rPi, HMLAN, HM
Mac, iPad, iPhone

fiedel

Hallo und erst mal vielen Dank euch beiden!

Jezt habe ich noch mal alles probiert was mir eingefallen ist und was ihr mir vorgeschlagen habt.

1.: Mein State heißt "Open" und "Closed". So kommt er direkt vom Device und so funktioniert er samt richtig angezeigtem Icon im FHEMWEB

2.: Die Dateien liegen in "www/images/default" und zum Test nochmal in "www/images/default/FP_Icons".

3.: "set WEB rereadicons" hab ich nach jeder Änderung gemacht.

4.: Der von Firebug angezeigte Dateiname sieht eigentl. richtig aus, es fehlt eben nur der state. Zu diesem Zeitpunkt ist der state "Closed". Wenn ich per Firebug den state von Hand eintrage, wird das spezielle Icon richtig angezeigt.

5.: Habe gestern und heute Updates gemacht und Probleme mit verschobenen Verzeichnissen bekommen. Rudi hat mir geholfen und ich habe ein "update force" gemacht. Später noch wegen eurer Tipps ein "update 95_FLOORPLAN.pm" - alles ohne Erfolg. FHEM läuft wieder normal, aber das Icon kommt nicht.

6.: Das mit der Kleinschreibung des state im Icon- Namen habe ich probiert, aber da mein state ja "Open/Closed" ist, ging das auch nicht.

7.: @DC: Deine Tipps bezüglich Namenskonventionen werde ich beherzigen wenn es läuft. Das "macht Sinn" ;o) und vereinfacht die Sache. Hatte auch schon sowas diffus im Hinterkopf. ;o)

Ich habe mangels weiterer Ideen schon versucht den Code im 95_FLOORPLAN.pm zu verstehen, der den state umsetzt. Dort kann ich aber bis jetzt nicht erkennen, warum es nicht gehen soll. Wahrscheinlich ist es nachher irgend ein kleiner Buchstaben- oder Zahlendreher... ;o) Werde weiter dranbleiben.

Viele Grüße

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

fiedel

Hallo,

nun habe ich auch noch die einfachere Vatinante mit "userattr fp_image" ausprobiert und die geht auch nicht.

Was für Diagnosemöglichkeiten hätte ich denn, um die Funktion des Perl- Programmteils im Floorplan- PM zu checken? Ich müsste ja z.B. nachsehen, was zur Laufzeit in den Variablen steht und ob der Programmteil überhaupt abgearbeitet wird. Wie geht man da am besten vor?

Viele Grüße

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

UliM

Dein Ansatz mit Firebug ist schon sehr gut.
Am besten in den Programmcode an den relevanten Stellen mit dem Befehl Log die Variableninhalte ins Log schreiben lassen und damit auswerten. So mach ich's zumindest immer. Und manchmal hilft's, inder Logmeldung auch den Namen der Variable und ggf auch die programmzeile anzugeben.

Also einfach einfügen
Log 1, "fp Zeile 716 - Wert von x: $x";

Viel Erfolg!

Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

fiedel

Danke Uli, das ist genau das, was ich gesucht habe! Hab schon in Richtung "print" geguckt, aber dann wohin und wo steht es dann... Es gibt auch einen Perl- Debugger, an den traue ich mich noch nicht ran. Aber so wie du vorschlägst, sollte ich gut weiterkommen. Werde berichten.

Viele Grüße

Frank

Edit 1:

Habe schon ein wenig getestet: Der Code im Floorplan- PM funktioniert richtig, der state kommt schon nicht vom Device:

Log:
2013.03.07 11:55:49 1: fp Zeile 454 - Wert von d- sollte geraetename sein: Bad_oben
2013.03.07 11:55:49 1: fp Zeile 454 - Wert von state:
2013.03.07 11:55:49 1: fp Zeile 456 - Wert von txt: <div id="Bad_oben" align="center" class="col2"><img src="/fhem/icons/FP_Icons/BadOben..png"></div>

Floorpl. PM:

if ($fp_fpimage) {
            my $state = ReadingsVal($d, "state", undef);

Wenn ich undef mit z.B. "Closed" überschreibe (gibt ja einen Defaultwert vor), wird das Icon richtig angezeigt.

Fortsetzung folgt... ;o)


Edit 2:

Hab noch keinen Ansatz, warum das Device in FHEMWEB korrekt funktioniert, im Floorpl.-PM der state jedoch nicht ankommt. Hier mal ein "list Bad_oben":

Internals:
   CODE       b8bd6f
   CUNO_LAN_MSGCNT 6
   CUNO_LAN_RAWMSG TB8BD6F0218
   CUNO_LAN_RSSI -62
   CUNO_LAN_TIME 2013-03-07 14:58:36
   DEF        b8bd6f
   IODev      CUNO_LAN
   LASTIODev  CUNO_LAN
   MSGCNT     6
   NAME       Bad_oben
   NR         222
   OPEN       0
   PREVSTATE  Closed
   PREVTIMESTAMP 1362664474
   STATE      Closed
   TYPE       CUL_FHTTK
   Prev:
     STATE      02
     TIMESTAMP  1362664716
   Readings:
     2013-03-07 14:58:36   Battery         ok
     2013-03-07 07:58:07   Previous        Open
     2013-03-07 14:58:36   Reliability     ok
     2013-03-07 14:58:36   Window          Closed
Attributes:
   fp_0_Hauptbildschirm 299,872,1,
   fp_0_Hauptbildschirm.image FP_Icons/BadOben.{state}.png
   fp_2_Obergeschoss 424,576,1,
   group      Geräte_Kontakte
   room       5_System


Edit 3:

Es gibt ein Zwischenergebnis:

if ($fp_fpimage) {
my $state = ReadingsVal($d, "state", undef);

Wenn ich "state" mit "Window" ersetze geht es! Der state "Open/Closed" taucht ja in den Readings des Device nur in Zusammenhang mit "Window:" auf. Der STATE des Device ist zwar "Closed", aber das ist kein "ReadingsVal" wie er im Floorplan- Programmteil verwendet wird. Muss aber noch auf eine praktikable Lösung kommen, da der Programmteil ja universell bleiben muss.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

UliM

Über ReadingsVal soll das reading "state" ausgelesen werden, das gibt es aber nicht.
Sehr unüblich - eigentlich haben alle devices sowohl ein reading "state" als auch die Angabe "STATE" .
Very strange.
D.h. mit anederen devices müssten fp-spezifische icons funktionieren. Richtig?
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

UliM

Hi,
Idee: ersetz mal
my $state = ReadingsVal($d, "state", undef);
durch
my $state = Value("$d");
und schau, ob es Nebeneffekte bei den anderen devices gibt.
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

fiedel

Hey Uli,

hatte deine Posts noch gar nicht gesehen. Da haben wir wohl zeitgleich den Hund beim K*** erwischt?! ;o)
Ich teste das und melde mich später nochmal.

Edit:

Habe das jetzt so eingebaut und es funktioniert wie erwartet. Ist ja noch viel einfacher, als der ursprüngliche Code. Werde demnächst noch mit einem anderen Funkkontakt- Typ testen und mit FS20. Falls es Probleme mit der Zuweisung für "my $state" gibt, schreibe ich es wieder hier rein.

Erst mal vielen Dank für die Hilfe!

Und mal so nebenbei: Der Floorplan ist ne tolle Sache! Wenn es den nicht gäbe, wäre FHEM zwar sehr nützlich, aber der Spiel- und Spaßfaktor kommt erst mit FP auf. So´n Tablet an der Wand mit ner selbst gestalteten Visualisierung für´s eigene Haus - das hat extrem was... ;o)

Viele Grüße und schönes WE!

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423