Hi,
ich habe jetzt ziemlich lange damit zugebracht, den Installation Guide zu schmökern, den Forumsserver mit Suchanfragen zu belasten, und ich komme leider nicht weiter:
Ich habe ein Presence auf meinen Fernseher.
wz_Fernseher
Attributes
eventMap present:an absent:aus
fp_Grundriss_OG_Tag 540,900,0,
fp_Grundriss_OG_Tag.image images/default/fp_Icons_1024/wz_Fernseher.{state}.png
room Wohnzimmer
Die Icons:
/opt/fhem/www/images/default/fp_Icons_1024/wz_Fernseher.an.png
/opt/fhem/www/images/default/fp_Icons_1024/wz_Fernseher.aus.png
Der Eintrag in der fhem.cfg
attr global userattr DbLogExclude devStateIcon devStateStyle fp_Grundriss_OG_Tag fp_Grundriss_OG_Tag.image icon lightSceneParamsToSave sortby webCmd
Leider zeigt der Floorplan keine Bildchen für den Fernseher an :(
Hi Rince,
ich überblicke gerade nicht, was dein Fehler ist. Aber schnapp dir mal Firefox, installiere das AddOn "Firebug", starte es dann mit Taste "F12", wenn du auf deiner FP- Seite bist. Dann klickst du auf das Symbol links direkt neben dem Käfer (Element untersuchen) und gehst / klickst mit der Maus auf dein Gerät - also da wo das Icon sein sollte. Dann bekommst du angezeigt, was der Floorplan da "sieht" und was er ggf. anderes erwartet.
Gruß
Frank
Hi,
bin nicht ganz sicher - evtl fehlt ein slash?
fp_Grundriss_OG_Tag.image images/default/fp_Icons_1024/wz_Fernseher.{state}.png
fp_Grundriss_OG_Tag.image /images/default/fp_Icons_1024/wz_Fernseher.{state}.png
=8-)
Hm,
danke schön,
besser, aber noch nicht ganz gut:
Der Quelltext ohne vorheriges / sieht so aus:
<div style="position:absolute; top:416px; left:860px;" id="div-wz_Fernseher">
<form method="get" action="/fhem/floorplan/Grundriss_OG_Tag/wz_Fernseher" autocomplete="off">
<table class="PRESENCE fp_Grundriss_OG_Tag" id="table-wz_Fernseher" align="center">
<tr class="devicestate fp_Grundriss_OG_Tag" id="wz_Fernseher">
<td informId="wz_Fernseher" colspan="0"><div id="wz_Fernseher" class="col2">an</div>
</td></tr>
</table></form>
</div>
Mit Ullis vorangestelltem / sieht er so aus:
<div style="position:absolute; top:416px; left:860px;" id="div-wz_Fernseher">
<form method="get" action="/fhem/floorplan/Grundriss_OG_Tag/wz_Fernseher" autocomplete="off">
<table class="PRESENCE fp_Grundriss_OG_Tag" id="table-wz_Fernseher" align="center">
<tr class="devicestate fp_Grundriss_OG_Tag" id="wz_Fernseher">
<td informId="wz_Fernseher" colspan="0"><div id="wz_Fernseher" class="col2"><img class=' wz_Fernseher_an' src="/fhem/images/default//images/default/fp_Icons_1024/wz_Fernseher.present.png"></div>
</td></tr>
</table></form>
</div>
Man beachte in der src= die 2 // zwischen default und images.
default//images
Also ein / zu viel. Aber ohne den / , ist die Zeile quasi ganz weg.
Was mir noch auffällt:
Wenn ich die Variante mit den // nehme, und die Bilder in /images/default lege (und neustarte), aktualisiert sich der Floorplan tatsächlich, allerdings habe ich dann auch das unsinnige Icon in der normalen Weboberfläche, wo es nicht hingehört. (vor allem, ich brauche pro Gerät ja für jede Auflösung ein anderes Icon)
Aber ich denke,
wir sind auf einem guten Weg :)
Nachtrag:
Wenn ich im Seitenquelltext den Link anklicke, dann öffnet sich eine Seite mit meinem Icon.
src="/fhem/images/default//fp_Icons_1024/wz_Fernseher.present.png"></div>
Attributes dazu:
fp_Grundriss_OG_Tag.image /fp_Icons_1024/wz_Fernseher.{state}.png
ZitatWas mir noch auffällt:
Wenn ich die Variante mit den // nehme, und die Bilder in /images/default lege (und neustarte), aktualisiert sich der Floorplan tatsächlich, allerdings habe ich dann auch das unsinnige Icon in der normalen Weboberfläche, wo es nicht hingehört. (vor allem, ich brauche pro Gerät ja für jede Auflösung ein anderes Icon)
Dafür gibt es eine "logistische" Lösung (http://forum.fhem.de/index.php/topic,17775.msg117358.html#msg117358);) : Du legst für jeden Floorplan einen eigenen Icon- Ordner an und weist ihn zu. Dann weden für diesen FP nur die Icons aus diesem Verzeichnis verwendet.
Gruß
Frank
Genau deshalb habe ich ja den Ordner fp_Icons_1024 angelegt.
Und die Pfadangaben dahin gelegt.
Aber FHEM ignoriert meine Pfadangaben und greift auf den Standardordner zu.
Und den Eintrag bei den userattrs den man setzten muss dafür, bilde ich mir auch ein richtig gesetzt zu haben. Siehe mein 1. Posting :)
Hi,
wie's ohne .image geht steht hier: http://forum.fhem.de/index.php/topic,17775.msg121391.html#msg121391
=8-)
PS: Ich bastel grad an einer schöneren Lösung als mit .image - tut aber noch nicht so wie ich mir das vorstelle...
Mach doch mal ein aktuelles Update! Rudi hat vor Kurzem einen Fix dazu gemacht. Der betraf genau dieses Verhalten: Wenn das Icon, welches fälschlicherweise angezeigt wird, nicht in dem FP-Icon-Ordner enthalten ist, überschneiden sich globale Variablen.
Gruß
Frank
Edit: Genau, da wo Ulis Link hinzeigt, steht das was ich meine.
@Rudi:
Hier holt uns die Trennung FHEMWEB vs FLOORPLAN wieder ein...
Am schönsten wäre es, wenn man den iconPath je floorplan setzen könnte. Ist dieser gesetzt, wird der genommen statt dem, der auf der fhemweb-Instanz gesetzt ist.
Grund: Innerhlab floorplan gibt's ein Menü, um zwischen den floorplans zu wechseln. Diese bewegen sich alle innerhalb derselben FHEMWEB-Instanz. Wenn man nun unterschiedliche iconPath je floorplan haben will, kann man sinnvoll nu noch über broswer-favorites wechseln statt über das floorplan-Menü.
Zur Ablage sehe ich zwei sinnvolle Möglichkeiten:
a) floorplan bekommt ein Attribut fp_iconPath, der Vorrang vor dem iconPath der fhemweb-Instanz bekommt
b) die fhemweb- Instanz hat bereits das userattr fp_<floorplanname>, dieses könnte man auf der FHEMWEB-Instanz ale floorplan-spezifischen iconPath missbrauchen.
Ich habs mal in fhemweb eingebaut ab Zeile 411.
$FW_sp = AttrVal($FW_wname, "stylesheetPrefix", "");
$FW_ss = ($FW_sp =~ m/smallscreen/);
$FW_tp = ($FW_sp =~ m/smallscreen|touchpad/);
@FW_iconDirs = grep { $_ } split(":", AttrVal($FW_wname, "iconPath",
"$FW_sp:default:fhemSVG:openautomation"));# if ($FW_iconDirs[0] eq "");
## floorplan-specific iconpath
my @args = split ("/",$arg);
if ($arg =~ m/\/floorplan\/(\w*)/ && $args[3] && $args[3] !~ m/\?/ && AttrVal($FW_wname, "fp_$args[3]",-1)) {
Log 1, "FW414; URL is $arg, floorplan-name is $args[3]";
@FW_iconDirs = grep { $_ } split(":", AttrVal($FW_wname, "fp_$args[3]",
AttrVal($FW_wname, "iconPath",
"$FW_sp:default:fhemSVG:openautomation")));
}
Log 1, "FW_iconDirs = $FW_iconDirs[0], $FW_iconDirs[1], $FW_iconDirs[2], $FW_iconDirs[3] ($arg)";
# /icons/... => current state of ...
Das funktioniert für den ersten Seitenaufbau eines flooplans. Problem ist, dass @FW_iconDirs bei jedem Aufruf des Webservers ( FW_devState() ) neu gebaut wird. Prüfen auf den URL-Teil /floorplan/ funktioniert für den ersten Aufruf, sobald jedoch weitere icons bestellt werden, steht kein /floorplan/ mehr in der URL -> es wird wieder der generelle @FW_iconDirs genommen. Offenbar wird nach einigen Sekunden die ganze Seite (via longpoll) frisch mit icons versorgt, dabei werden also wieder die fhemweb-Standard-icons hergenommen.
Da @FW_iconDirs nicht global ist, kann ich's von floorplan aus nicht überbügeln.
Hast Du ne Idee, wie man das einbauen könnte?
LG, Uli
Also so als völlig ahnungsloser Mensch fände ich folgendes Prozedere schlau:
Bei jedem Floorplan ein attr definieren, der zu den dort zu verwendenden Icons zeigt (also die Icon Pfadangabe)
Ich fände es auch akzeptabel, wenn man alle Standardicons dort ebenfalls hinkopieren muss.
Dann könnte man evtl. die global userattrs völlig ignorieren, und der Floorplan kann bzw. muss sich halt selber um die Icons kümmern. Kollidiert dafür aber nicht mit irgendwas.
Für jedes Icon eine eigene Webinstanz zu starten, halte ich für unpraktikabel. 2 Instanzen pro Gerät (on off), und das multipliziert mit der Anzahl der verschiedenen Auflösungen.
Würde bei mir bedeuten:
6 eigene Icons => 12 Instanzen
5 verschiedene Auflösungen
Da käme ich auf 60 Instanzen?
5 x ein eigenes Iconverzeichnis zu benutzen klingt da einfacher.
Oder rede ich grad völlig am Problem vorbei?
Zitat von: Rince am 05 Januar 2014, 11:36:10
Würde bei mir bedeuten:
6 eigene Icons => 12 Instanzen
5 verschiedene Auflösungen
Da käme ich auf 60 Instanzen?
Oder rede ich grad völlig am Problem vorbei?
Hi,
fast :)
6 eigene icons -> 12 Instanzen = nein. Nur eine Instanz mit iconPath auf einen speziellen Ordner, in dem nur die icons liegen, die speziell für diesen floorplan gelten sollen. Alle weiteren icons können nach wie vor aus images/default gezogen werrden, siehe verlinktes Beispiel oben.
5 verschiedene Auflösungen - das wären dann 5 Instanzen, da 5 unterschiedliche Ico-Sätze = 5 ordner benötigt werden.
Das geht ja schon jetzt so.
Gerne würde ich erreichen, das man den iconPath direkt zu einem floorplan assignen kann und nicht zu der fhemweb-Instanz - bleibt aber abzuwarten ob das geht.
=8-)
Du meinst diesen Post?
http://forum.fhem.de/index.php/topic,17775.msg121391.html#msg121391
Kann wer das bitte als Codebeispiel posten und evtl 1-2 Sätze zur Erläuterung schreiben?
Ich kann es nicht nachvollziehen.
Das angesprochene Update habe ich gezogen.
Eine spezielle FHEMWEB-INstanz anlegen, die mittels IconPath auf den Ordner zeigt, in dem die Sondericons liegen:
define MitFloorplanIcons FHEMWEB 8090 global
attr MitFloorplanIcons iconpath FloorplanSpezialIcons:default
Mehr code isses nich :)
Und dann im Browser aufrufen mit http://<ip>:8090
Dazu extra Ordner in www/images/FloorplanSpezialIcons mit den bedonseren Icons, welche den Device Namen besitzen "Licht_Decke.on"; "Licht_Decke.off" etc.
set MitFloorplanIcons rereadicons
nicht vergessen :)
=8-)
?
Hm,
habe es mal versucht über die Befehlszeile einzugeben:
define OG_Grundriss_1024 FHEMWEB 8090 global
Finde nun unter FHEMWEB
=> soweit ok
Nun:
attr OG_Grundriss_1024 iconpath fp_Icons_1024:default
OG_Grundriss_1024: unknown attribute iconpath, choose one of verbose:0,1,2,3,4,5 room group comment alias eventMap userReadings CORS:0,1 HTTPS:1,0 SVGcache:1,0 allowfrom basicAuth basicAuthMsg column endPlotNow:1,0 endPlotToday:1,0 fwcompress:0,1 hiddengroup hiddenroom iconPath longpoll:0,1 longpollSVG:1,0 menuEntries plotfork:1,0 plotmode:gnuplot,gnuplot-scroll,SVG plotsize nrAxis redirectCmds:0,1 refresh reverseLogs:0,1 roomIcons sortRooms smallscreen:unused stylesheetPrefix touchpad:unused webname DbLogExclude devStateIcon devStateStyle fp_Grundriss_OG_Tag fp_Grundriss_OG_Tag.image icon lightSceneParamsToSave sortby webCmd or use attr global userattr iconpath
???
Zitat von: Rince am 05 Januar 2014, 15:18:36
OG_Grundriss_1024: unknown attribute iconpath
Da gehört ein großes P rein... iconPath :)
Mit dem Attribut-Dropdown im Dedtailscreen wär das nicht passiert ;-)
=8-)
Ok.
Ich kann jetzt FHEM auf Port 8090 aufrufen.
Muss ich jetzt den Floorplan neu anlegen auf der Seite mit diesem Port?
Ziehe die Frage zurück.
Natürlich gilt der alte Floorplan ja weiter.
Zunächst musste ich longpoll wieder aktivieren., sonst gab es keine Updates mehr.
Nur leider tut immer noch nicht.
@UliM:
Es wuerde mir besser gefallen, das Problem nicht haben zu muessen, und es ueber unterschiedliche FHEMWEB Instanzen zu loesen. Wenn ihr doch darauf besteht:
Mir passen die Ausnahmen fuer FLOORPLAN nicht, ich haette das gerne generischer, habe aber noch keinen konkreten Plan. Irgendetwas mit unterschiedlichen Icons je Raum, bin fuer (durchdachte!) Vorschlaege offen.
Das Problem ist, dass zwar beim ersten Aufruf irgendwie feststellbar ist, dass es sich um ein FLOORPLAN handelt (aber nicht immer welcher, in deinem Beispiel ist /fhem/floorplan gleich /fhem/floorplan/Grundriss), bei der Notify fuer longpoll ist das aber nicht mehr vorhanden. Und du darfst FW_iconDirs auch nicht ueberbuegeln, weil man in einem Browser FHEMWEB, in dem anderen FLOORPLAN anschauen darf (von unterschiedlichen FLOORPLANS nicht zu sprechen).
D.h. fhemweb.js muss bei der inform "Bestellung" angeben, welche Geraete/Events interessant sind (bisher via room=XXX), ob man roh-Daten (fuer die Konsole) oder welche mit Status/Bild haben will, und wenn letzteres, welche Bilder gewuenscht sind.
Folgendes muss implementiert/geloest werden:
- entscheiden, wie man mehrere Icons einem Geraet auch bei gleichem FHEMWEB Instanz zuordnen kann, und in FHEMWEB implementieren
- im URL genug info hinterlegen, dass man eindeutig auf einem Floorplan schliessen kann
- fhemweb.js modifizieren, damit floorplan Kennung per inform Bestellung weitergegeben werden
- FW_notify modifizieren, damit diese Daten ausgewertet werden.
Hallo Rudi,
Zitat von: rudolfkoenig am 05 Januar 2014, 18:58:08
Es wuerde mir besser gefallen, das Problem nicht haben zu muessen, und es ueber unterschiedliche FHEMWEB Instanzen zu loesen. Wenn ihr doch darauf besteht:
Mir auch :) Ich selbst brauche diese Funktionalität nicht. Auch habe ich keine Info, wieviele user das benötigen - es kommt halt alle viertel Jahre mal eine Meldung, dass damit etwas nicht funktioniert.
Zitat von: rudolfkoenig am 05 Januar 2014, 18:58:08
Mir passen die Ausnahmen fuer FLOORPLAN nicht, ich haette das gerne generischer, habe aber noch keinen konkreten Plan. Irgendetwas mit unterschiedlichen Icons je Raum, bin fuer (durchdachte!) Vorschlaege offen.
Unterschiedliche icons je Raum macht m.E. wenig Sinn, damit wäre es dann eigentlich ja doch nur für floorplan.
Zitat von: rudolfkoenig am 05 Januar 2014, 18:58:08
Das Problem ist, dass zwar beim ersten Aufruf irgendwie feststellbar ist, dass es sich um ein FLOORPLAN handelt (aber nicht immer welcher, in deinem Beispiel ist /fhem/floorplan gleich /fhem/floorplan/Grundriss), bei der Notify fuer longpoll ist das aber nicht mehr vorhanden. Und du darfst FW_iconDirs auch nicht ueberbuegeln, weil man in einem Browser FHEMWEB, in dem anderen FLOORPLAN anschauen darf (von unterschiedlichen FLOORPLANS nicht zu sprechen).
Du hast ja schon mal negkündigt, die ganzen globalen Variablen in ein hash schieben zu wollen - damit wäre das ja erledigt.
Vielleicht lässt sich bei dieser Umstellung die icon-Anforderung ja mit abfrühstücken - zB dadurch, dass der iconpath ebenfalls im hash abgelegt wird, dort aber nur einmalig aus dem Attribute gefüllt wird. Ob das passt, hängt dann von der Gesamtlösung ab.
Zitat von: rudolfkoenig am 05 Januar 2014, 18:58:08
D.h. fhemweb.js muss bei der inform "Bestellung" angeben, welche Geraete/Events interessant sind (bisher via room=XXX), ob man roh-Daten (fuer die Konsole) oder welche mit Status/Bild haben will, und wenn letzteres, welche Bilder gewuenscht sind.
Folgendes muss implementiert/geloest werden:
- entscheiden, wie man mehrere Icons einem Geraet auch bei gleichem FHEMWEB Instanz zuordnen kann, und in FHEMWEB implementieren
- im URL genug info hinterlegen, dass man eindeutig auf einem Floorplan schliessen kann
- fhemweb.js modifizieren, damit floorplan Kennung per inform Bestellung weitergegeben werden
- FW_notify modifizieren, damit diese Daten ausgewertet werden.
...und das wäre mir definitiv zu viel Aufwand unter der Annahme, dass es nur weinge Nutzen.
Vorschlag:
- Ich nehme den Alternativweg über separate FHEMWEB-device mit entspr. iconPath in den Floorplan-Einführungsleitfaden auf.
- Wenn die Umstellung FHEMWEB von globalen Variablen auf hash erfolgt, kannst Du ja mal schauen, ob es sich dabei leicht (!) mit einbauen lässt (dabei wird ja auch eine entspr. Anüpassung von floorplan notwendig sein). Wenn nicht, dann halt nicht :)
Ok?
Gruß, Uli
Zitat von: Rince am 05 Januar 2014, 16:50:05
Ok.
Ich kann jetzt FHEM auf Port 8090 aufrufen.
...
Nur leider tut immer noch nicht.
Hi Rince,
diese Meldung ist zu allgemein, unm helfen zu können. Was geht nicht? Was genau hast Du gemacht? Meldungen im Log?
Gruß, Uli
Alternativ-weg dokumentieren ist gut. Leider loest das verschieben der Variablen ins FHEMWEB-hash keine der Probleme, es wird "nur" sauberer, und muss nicht unnoetig kopiert werden. Leider weiss FHEMWEB dann immer noch nicht, ob die Bilder fuer eine FHEMWEB-Seite oder fuer ein FLOORPLAN (und wenn, dann welches) zu liefern sind.
ZitatHallo Rudi,
Zitat von: rudolfkoenig am 05 Januar 2014, 18:58:08
Es wuerde mir besser gefallen, das Problem nicht haben zu muessen, und es ueber unterschiedliche FHEMWEB Instanzen zu loesen. Wenn ihr doch darauf besteht:
Mir auch :) Ich selbst brauche diese Funktionalität nicht. Auch habe ich keine Info, wieviele user das benötigen - es kommt halt alle viertel Jahre mal eine Meldung, dass damit etwas nicht funktioniert.
Soso, ich könnte ja per Cronjob stündlich schreiben, dass es ein Problem gibt. ;) :P
Vermutlich gibt es nur so wenige Meldungen, weil die Leute merken, dass es nicht geht und dann aufgeben. Manche haben sich auch schon am programmieren von Alternativen zu FP versucht. Dabei ist die Grundidee (so wie sie bis jetzt im FP- Handbuch beschrieben ist) völlig ausreichend um ein top Frontend nach eigenem Geschmack zu gestalten.
Ist das denn überhaupt praxisgerecht, für jeden Unterfloorplan eine extra WEB-Instanz anzulegen?
Ich habe z.B. einen Hauptfloorplan und 8 Unter- FPs, die ich per Buttons im Hauptfloorplan anspringe. Wird das nicht irgendwann langsam?
Außerdem: Ich nutze den FP über Portfreigabe und Basic Auth/HTTPS. Jetzt müsste ich für jeden Unterfloorplan einen Port freigeben und ein extra Login einrichten.
Also ich lebe dann lieber weiter mit "refresh" statt "longpoll" und habe dafür meine Darstellung, so wie gewünscht. Vielleicht ergibt sich bei Rudis geplanter "Umstrukturierung" der Variablen noch eine bessere Lösung. Ich würde gerne etwas dazu beitragen, aber obwohl ich hier schon sehr viel gelernt habe, bin ich davon leider noch weit entfernt.
Viele Grüße
Frank
Zitat von: rudolfkoenig am 06 Januar 2014, 17:39:44
Leider weiss FHEMWEB dann immer noch nicht, ob die Bilder fuer eine FHEMWEB-Seite oder fuer ein FLOORPLAN (und wenn, dann welches) zu liefern sind.
Das liesse sich ja beheben durch ein Einfügen von "&floorplan=<floorplanname>", oder auf html-Ebene als floorplanId=<floorplanname> analog informId.
In der URL-Angabe für images könnte statt "/fhem/images/.." ein "/floorplan/<floorpanname>/images/.." übergeben werden, das dann halt ausgewertet und auf /fhem/images zurückgesetzt werden müsste.
Eine Knappheit an Übergabemöglichkeiten hat's also m.E. nicht, aber es bleibt halt ne floorplan-Sonderlösung in FHEMWEB.pm & .js und damit unschön.
Hab den floorplan-guide entsprechend angepasst (Version 1.3 nun im SVN), für feedback von Probelesern (Rince?) wär ich dankbar.
@Frank: sehe ich ebenso wie Du. Wie man aber auch sieht, wäre die Implementierung einer "sauberen" Lösung für das Problem ein größerer Akt.
Gruß, Uli
ZitatIst das denn überhaupt praxisgerecht, für jeden Unterfloorplan eine extra WEB-Instanz anzulegen?
Nein, finde ich nicht. Ist es normal, dass man fuer die gleiche Lampe in jedem Floorplan unterschiedliche Bilder haben will? Das finde ich auch nicht.
Uli, falls Du sicherstellen kannst, dass
- bei einem normalen Floorplan-Aufruf der Name des Floorplans vorkommt (also _immer_ /fhem/floorplan/Grundriss, keine Ausnahmen wie jetzt mit /fhem/floorplan)
- im body Attribut der Name des Floorplans (wie bisher) vorkommt
dann wuerde ich
- fhemweb.js beibringen, dass im inform dieser Name (aus body) an FHEMWEB weitergereicht wird
- FHEMWEB aendern, damit der Name des Floorplans vor dem iconPath eingefuegt wird.
Hi,
brauch grade Zeit für Familie.
Ich sehe sie mir im SVN nachher gerne an :)
@Rudi
Ich falle mir als Beispiel wer unterschiedliche Icons braucht ein ;)
Es ist so:
Meine Devices erstrecken sich vom FullHD Fernseher bis hin zum 320x200 Pixel Einstiegshandy meiner Frau.
Dazwischen tummeln sich 5 Tabs, mit nochmal 3 verschiedenen Auflösungen.
Ich will zwar nicht für jedes Device einen eigenen Floorplan, aber für 3 oder 4 wäre es schon hübsch.
Auf dem Mega Screen kann ich viel mehr Infos darstellen (Garten, Hofeinfahrt, Kamera(?)), als auf dem Mini Display des Smartphones meiner Frau. Die ist aber wichtig.
Weil vor ihr muss ich ja die Kosten und die Zeit rechtfertigen ;)
Grüße
Rince
Zitat von: rudolfkoenig am 06 Januar 2014, 18:45:45
Uli, falls Du sicherstellen kannst, dass
- bei einem normalen Floorplan-Aufruf der Name des Floorplans vorkommt (also _immer_ /fhem/floorplan/Grundriss, keine Ausnahmen wie jetzt mit /fhem/floorplan)
Eingecheckt (es wird ein redirect ausgeführt falls die URL den floorplan-Namen noch nicht enthält)
Dieser Ansatz gefällt mir sehr gut - darf halt nicht auf die Bretter gehen falls der www/images/<floorplanname>-Unterordner nicht existiert - das ist ja der Regelfall.
Oder hab ich das falsch verstanden?
Gruß, Uli
Gut. Ich checke nachher die letzten Änderungen von Rudi und dir Uli aus, mach nen Reboot und lege los mit der Erstellung eines neuen Floorplans.
Soweit ich das jetzt verstanden habe, muss der Unterordner mit den besonderen Icons so heißen wie der Floorplan?
Ich werde zwei Icons für ein Presence Device testen und für ein HM Device.
Dann werde ich mal an Hand der Anleitung 1.3 versuchen einen entsprechenden neuen Floorplan anzulegen. Durchgelesen habe ich es mir schon ein paar Mal :)
Uli, wenn du nix dagegen hast, maile ich dir meine Step by Step Vorgehensweise zu. Das dürfte das Nachvollziehbarste sein. Wenn ich es hinbekomme, dürfte es jeder schaffen :)
Zitat von: Rince am 06 Januar 2014, 20:54:05
Gut. Ich checke nachher die letzten Änderungen von Rudi und dir Uki aus, mach nen Reboot und lege los mit der Erstellung eines neuen Floorplans.
Da musst Du noch warten, bis Rudi die Anpassungen in fhemweb.* gemacht und eingecheckt hat. Die Änderung in floorplan.pm bringt erstmal nur, dass der floorplan-name auch in die URL kommt, wenn man nur den Standard-floorplan aufgerufen hat.
Zitat von: Rince am 06 Januar 2014, 20:54:05
Soweit ich das jetzt verstanden habe, muss der Unterordner mit den besonderen Icons so heißen wie der Floorplan?
So hab ich's auch verstanden - warten wir ab was Rudi sagt :)
Zitat von: Rince am 06 Januar 2014, 20:54:05
Uli, wenn du nix dagegen hast, maile ich dir meine Step by Step Vorgehensweise zu. Das dürfte das Nachvollziehbarste sein. Wenn ich es hinbekomme, dürfte es jeder schaffen :)
Lieber wäre mir Fehlerhinweise oder noch besser eine "Korrektur" für den floorplan-leitfaden.
Gruß, Uli
Zitat von: UliMZitat von: Rince am Heute um 20:54:05
Uli, wenn du nix dagegen hast, maile ich dir meine Step by Step Vorgehensweise zu. Das dürfte das Nachvollziehbarste sein. Wenn ich es hinbekomme, dürfte es jeder schaffen :)
Lieber wäre mir Fehlerhinweise oder noch besser eine "Korrektur" für den floorplan-leitfaden.
Gruß, Uli
Logisch. Ich hab da schon 2-3 Anmerkungen :)
Wenn Rudi die Änderungen eingecheckt hat, lege ich los :)
Habs geaendert, bitte testen. Bei mir scheint es mit und ohne longpoll zu funktionieren, hoffentlich ohne Nebeneffekte.
Floorplan-Icons werden zuerst in einem Verzeichnis fhem/www/images/<floorplanName> gesucht, und dann erst im iconPath. rereadicons ist weiterhin notwendig.
Ich lege los:
Bewaffnet:
Guide V 1.3 aus dem SVN
Update FHEM
die beiden frisch geänderten Dateien von Rudi aus dem SVN geholt und auf den RasPi gebracht (01_FHEMWEB.pm & fhemweb.js)
Vorbereitung für den Floorplan:
Verzeichnis angelegt für eigene Grafiken: /opt/fhem/www/images/fp_OG_Grundriss_1024
(Frage an Uli an dieser Stelle => wenn man einen Floorplan anlegt, könnte dann nicht dieses Verzeichnis automatisch angelegt werden?)
Reboot
ich melde mich dann später wieder :)
define OG_Grundriss_1024 FLOORPLAN
OK
Aufruf des Floorplans scheitert:
Chrome & Firefox
=> Fehler: Umleitungsfehler
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann
Cookies löschen hilft nicht weiter
(Auf die Einstellungen unter Unsorted kann ich zugreifen)
Hi,
oh - den Fehler hatte ich gestern irgendwann auch in einem Zwischen-Entwicklungsstand. Habs dann aber nochmal geändert und die Meldung danach nicht mehr bekommen.
Dieser Fehler tritt nur auf, wenn Du im Browser aufrufst
http://<ip>:<port>/fhem/floorplan (dies wird auch angesprungen bei Klick auf den Menüpunkt "Floorplans" im fhem-Menü)
aber nicht wenn Du aufrufst
http://<ip>:<port>/fhem/floorplan/<floorplanname>
Kannst Du's damit noch mal probieren?
Gruß,
Uli
PS: Ich bin bis Fr auf Dienstreise, kann also selbst frühestens Fr Abend was ändern.
Ja, ich mache weiter :)
Erfolg. :)
Aber so genau weiß ich noch nicht warum ;)
Ich beschreibe es mal:
Zunächst die Attributes des FHEMWEB:
iconPath fp_OG_Grundriss_1024:default:openautomation
longpoll 1
verbose 5
Jetzt kommts:
mein Verzeichnis hat wirklich fp_OG_Grundriss_1024 geheißen
Damit geht es nicht!
Verbose sorgt für etwas Klarheit:
2014.01.07 18:33:24.116 4: HTTP FHEMWEB:192.168.10.10:61038 GET /fhem/images/default/fp_OG_Grundriss_1024.png
2014.01.07 18:33:24.125 4: HTTP FHEMWEB:192.168.10.10:61039 GET /fhem/images/default/off.png
2014.01.07 18:33:24.177 4: HTTP FHEMWEB:192.168.10.10:61039 GET /favicon.ico
2014.01.07 18:33:24.178 4: WebFloorplan1024: redirecting /favicon.ico to /fhem
2014.01.07 18:33:24.185 4: HTTP FHEMWEB:192.168.10.10:61039 GET /fhem
2014.01.07 18:33:24.375 4: /fhem / RL:1010 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2014.01.07 18:33:24.382 4: HTTP FHEMWEB:192.168.10.10:61038 GET /fhem/floorplan/OG_Grundriss_1024?XHR=1&inform=type=status;filter=.*;iconPath=OG_Grundriss_1024×tamp=1389116000579
2014.01.07 18:33:26.090 4: HTTP FHEMWEB:192.168.10.10:61039 GET /fhem/images/default/off.png
Die letzte Zeile verrät uns, dass der iconPath OG_Grundriss_1024 erwartet wird.
Habe daraufhin den Ordner einfach unbenannt, das fp_ gelöscht.
Reread durchgeführt
Und schon funktioniert es :)
Was mir noch aufgefallen ist:
Hatte nachdem ich den Ordner umbenannt habe noch einen Fehler in der Großschreibung des Ordnernamens.
OG_grundriss_1024 (!) => das hat nicht gestört
Noch etwas zum iconPath:
OG_Grundriss_1024:default:openautomation
fp_OG_Grundriss_1024:default:openautomation
=> spielt keine Rolle => wichtig ist nur, dass das fp_ nicht im echten Ordnernamen auftauchen darf
PS:
Ein kleine Frage noch:
Wie kann ich denn einen alten Floorplan und das Floorplan.image löschen, ohne das FHEM meckert?
Wenn du willst, schreibe ich dir 1-2 Seiten zu deiner Anleitung und füge ein paar Screenshots bei. Die vereinfachen das ziemlich.
Was man noch ändern könnte:
Das Hintergrundbild könnte auch in dem neu angelegten Ordner gespeichert werden. Dann hätte man alles auf einem Fleck. Aber das macht vermutlich mehr Aufwand, oder?
Zitat von: Rince am 07 Januar 2014, 18:59:13
Wenn du willst, schreibe ich dir 1-2 Seiten zu deiner Anleitung und füge ein paar Screenshots bei. Die vereinfachen das ziemlich.
Was man noch ändern könnte:
Das Hintergrundbild könnte auch in dem neu angelegten Ordner gespeichert werden. Dann hätte man alles auf einem Fleck. Aber das macht vermutlich mehr Aufwand, oder?
Hi,
Beschreibung bitte noch nicht jetzt - erst mal abwarten, ob Rudi das hinkriegt - und dann die Beschreibung zur endgültigen Lösung schreiben :)
Hintergrundbild im sparaten Ordner - dann müsste man diese ordner IMMER anlegen. Ich hoffe, dass das Hintergrundbild in default bleiben kann und man die floorplan-spüezifischen Ordner nur anlegen muss, wenn man floorplan-spezifische icons haben will.
bugfix bezgl. URL getestet und eingecheckt.
Ab morgen früh 7:30 per update verfügbar.
Gruß, Uli
Welcome back :)
Ja, dann müsste der Ordner immer da sein. Deshalb wäre es schlau, den Ordner automatisch anzulegen, wenn der Floorplan definiert wird und er noch nicht existieren sollte ;)
Zitaterst mal abwarten, ob Rudi das hinkriegt
Habe ich noch was zu tun?
Moin Rudi,
Du hattest mal geschrieben, dass Du dem iconPath den floorplan-Namen voranstellen würdest (siehe oben).
Oder ist das schon passiert?
Ich bin nicht davon ausgegangen und hab's deshalb noch gar nicht probiert...
Skigrüße,
Uli
Sollte erledigt sein (s.o.), wurde von Rince auch verifiziert
Hi,
Ah, ih - Super!
Verifiziert hat er das mE nicht, denn er hat den Ordnernamen ja wirklich in den icinPath geschrieben.
Meine Erwartungshaltung war:
IconPath default:openautomation
floorplan Grundriss
-> fhemweb tut bei Anzeige des floorplans so als wäre als iconPath gesetzt Grundriss:default:openautomation - so werden die floorplan-spezifischen icons angezeigt, ohne das ein Attribut gesetzt werden muss
So hatte ich Deinen Vorschlag verstanden, das ist aber nicht das, was Rince getestet hat.
Bin unterwegs und kann's grad nicht ausprobieren...
Gruß, Uli
@Uli: ich habe das implementiert, was Du gerade beschriben hast.
Hi Rudi, hi alle Interessierten,
das funktioniert:)
Kurze Beschreibung meines Tests:
Es existiert ein floorplan namens "PlotsPage", darin ein device namens "ez_Schreibtisch".
Die fhemweb-Instanz heisst WEB und hat die Attribute "longpoll 1" sowie "iconPath default:openautomation" .
Nun habe ich den Ordner "www/images/PlotsPage" angelegt.
Darin abgelegt die speziellen icons "ez_Schreibtisch.on.png" und "ez_Schreibtisch.off.png"
Dann einmal aufgerufen "set WEB rereadicons"
Den floorplan "PlotsPage" aufgerufen -> das device ez_Schreibtisch wird nun mit den speziellen icons angezeigt, wird aktualisiert beim Schalten aus dem floorplan wie auch beim Schalten per Hardware-Schalter -> auch longpoll verwendet diese speziellen icons :)
In einem anderen floorplan wie auch in fhemweb wird für dasselbe device weiterhin das icon aus dem Ordner "default" verwendet.
@Rudi: Glückwunsch und Danke!
@all: Werde nun den Floorplan-Einführungsleitfaden aktualisieren und nen Fred in "Ankündigungen" platzieren.
Damit ist der bisherige Weg über die userattr fp_image und fp_<floorplanname>.image deprecated, wird aber zur Abwärtskompatibilität vorerst weiter unterstützt.
Grüße,
Uli
Hallo Uli & Rudi,
bin schwer begeistert! Das übertrifft ja sogar noch meine Erwartungen! ;D Was mir beim Testen (positiv) aufgefallen ist:
- Wie Uli schon in seinem Testaufbau schrieb, muss/darf der spezielle Floorplan- Ordner nicht im "Iconpath" stehen. FHEM findet den auch so. Im Gegenteil: setzt man ihn dort ein, wird unter FHEMWEB ggf. das spezielle FP- Icon angezeigt, was man dort ja nicht möchte.
- Es ist nicht nötig für jeden Unterfloorplan eine extra Instanz (Port) anzulegen (so hatte ich Rudi erst verstanden). Es genügt wie gehabt eine.
- Man kann jetzt für jedes Objekt ein wirklich eigenes Icon zuweisen, da sich die Zuweisung nun auf den Objektnamen bezieht. Das war mit der "attr- / fp_Name.image- Methode" auch schon möglich, aber jetzt ist das noch eindeutiger und einfacher.
Vielen Dank und viele Grüße!
Frank
Bei mir klappt dies irgendwie nicht...
Ich habe ein RPI und via apt-get die letzte Version von FHEM installiert. FHEM schalten dabei "HMW_LC_Sw2_DR". Der Floorplan ist erstellt und die Standard-Icons (Glühlampe gelb/grau) werden vial longpoll richtig geschalten.
Der Floorplan heißt LCAR und der Aktor "kue_lampe_1"
attr global userattr devStateIcon devStateStyle fp_LCAR icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd none
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3
#define telnetPort telnet 7072 global
define WEB FHEMWEB 8083 global
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }
attr WEB longpoll 1
define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen
define WEBtablet FHEMWEB 8085 global
attr WEBtablet fp_LCAR 1
attr WEBtablet iconPath default:openautomation
attr WEBtablet longpoll 1
attr WEBtablet stylesheetPrefix LCAR
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log
define eventTypes eventTypes ./log/eventTypes.txt
# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
#Syntax highlighting
#Homematic Gateway
define HM485_LAN HM485_LAN 192.168.2.4:1000
attr HM485_LAN alias Homematic_Gateway
attr HM485_LAN hmwId 00000001
attr HM485_LAN icon cul_cul
attr HM485_LAN room hidden
define HMW_LC_Sw2_DR_LEQ0116953 HM485 0000B84F
attr HMW_LC_Sw2_DR_LEQ0116953 firmwareVersion 3.06
attr HMW_LC_Sw2_DR_LEQ0116953 icon IR
attr HMW_LC_Sw2_DR_LEQ0116953 model HMW_LC_Sw2_DR
attr HMW_LC_Sw2_DR_LEQ0116953 room hidden
attr HMW_LC_Sw2_DR_LEQ0116953 serialNr LEQ0116953
define FileLog_HMW_LC_Sw2_DR_LEQ0116953 FileLog ./log/HMW_LC_Sw2_DR_LEQ0116953-%Y.log HMW_LC_Sw2_DR_LEQ0116953
attr FileLog_HMW_LC_Sw2_DR_LEQ0116953 logtype text
attr FileLog_HMW_LC_Sw2_DR_LEQ0116953 room hidden
define HMW_LC_Sw2_DR_LEQ0116953_01 HM485 0000B84F_01
attr HMW_LC_Sw2_DR_LEQ0116953_01 alias kue_sensor_lampe_1
attr HMW_LC_Sw2_DR_LEQ0116953_01 firmwareVersion 3.06
attr HMW_LC_Sw2_DR_LEQ0116953_01 model HMW_LC_Sw2_DR
attr HMW_LC_Sw2_DR_LEQ0116953_01 room hidden
attr HMW_LC_Sw2_DR_LEQ0116953_01 serialNr LEQ0116953
attr HMW_LC_Sw2_DR_LEQ0116953_01 subType key
define HMW_LC_Sw2_DR_LEQ0116953_02 HM485 0000B84F_02
attr HMW_LC_Sw2_DR_LEQ0116953_02 alias kue_sensor_lampe_2
attr HMW_LC_Sw2_DR_LEQ0116953_02 firmwareVersion 3.06
attr HMW_LC_Sw2_DR_LEQ0116953_02 model HMW_LC_Sw2_DR
attr HMW_LC_Sw2_DR_LEQ0116953_02 room hidden
attr HMW_LC_Sw2_DR_LEQ0116953_02 serialNr LEQ0116953
attr HMW_LC_Sw2_DR_LEQ0116953_02 subType key
define HMW_LC_Sw2_DR_LEQ0116953_03 HM485 0000B84F_03
attr HMW_LC_Sw2_DR_LEQ0116953_03 alias kue_lampe_1
attr HMW_LC_Sw2_DR_LEQ0116953_03 firmwareVersion 3.06
attr HMW_LC_Sw2_DR_LEQ0116953_03 fp_LCAR 100,100,0,
attr HMW_LC_Sw2_DR_LEQ0116953_03 model HMW_LC_Sw2_DR
attr HMW_LC_Sw2_DR_LEQ0116953_03 room hidden
attr HMW_LC_Sw2_DR_LEQ0116953_03 serialNr LEQ0116953
attr HMW_LC_Sw2_DR_LEQ0116953_03 subType switch
define HMW_LC_Sw2_DR_LEQ0116953_04 HM485 0000B84F_04
attr HMW_LC_Sw2_DR_LEQ0116953_04 alias kue_lampe_2
attr HMW_LC_Sw2_DR_LEQ0116953_04 firmwareVersion 3.06
attr HMW_LC_Sw2_DR_LEQ0116953_04 fp_LCAR 300,100,0,Test
attr HMW_LC_Sw2_DR_LEQ0116953_04 model HMW_LC_Sw2_DR
attr HMW_LC_Sw2_DR_LEQ0116953_04 room hidden
attr HMW_LC_Sw2_DR_LEQ0116953_04 serialNr LEQ0116953
attr HMW_LC_Sw2_DR_LEQ0116953_04 subType switch
define LCAR FLOORPLAN
attr LCAR fp_arrange 1
attr LCAR stylesheet floorplanstyle_lcar.css
Weiterhin gibt es das Verzeichnis
www\images\LCAR\
und darin die Bilder:
kue_lampe_1.off.png
kue_lampe_1.on.png
set WEB rereadicons
durchgeführt.
Trotzdem werden die eigenen Icons nicht angezeigt.
Edit - GELÖST...:
Man darf als Dateinamen nicht den Alias verwenden, sondern den Namen von Define.
define HMW_LC_Sw2_DR_LEQ0116953_03 HM485 0000B84F_03
attr HMW_LC_Sw2_DR_LEQ0116953_03 alias kue_lampe_1
Der Dateiname für OFF ist dann:
HMW_LC_Sw2_DR_LEQ0116953_03.off.png
Als SVG-Bild (HMW_LC_Sw2_DR_LEQ0116953_03.off.svg) wird es auch richtig umgesetzt. Bei mir jedoch etwas zu sehr klein. Liegt vermutlich an der SVG-Datei.