Hauptmenü

JPG in FHEMWeb darstellen

Begonnen von sct14675, 10 März 2016, 08:14:55

Vorheriges Thema - Nächstes Thema

sct14675

Hallo zusammen,
ich hab ein Problem, ein JPG aus einer lokalen Datei darzustellen, das von einer IPCAM aufgenommen wurde.
Dazu habe ich folgendes Setup erstellt:
Ich kann per "get cam.Einfahrt image" ein JPG lokal abspeichern, und zwar in "/opt/fhem/pics/cam.Einfahrt_snapshot.jpg"

Wie kann ich das direkt in FHEMWeb anzeigen lassen?
Mit einem WEBLINK IMAGE kann ich zwar ein JPG direkt von einem Webserver anzeigen lassen, also so:
define wb.camimage weblink image http://192.168.178.24:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2

Aber eine lokale Adresse scheint nicht zu funktionieren.

Wie kann ich das Problem lösen und direkt die lokale Datei anzeigen lassen?

danke und tschüss,
Tom

betateilchen

FHEMWEB ist selbst ein Webserver. Wenn also die Datei an der richtigen Stelle abgelegt ist, kannst Du sie auch - wie jedes andere Bild im Frontend, z.B. Icons - problemlos anzeigen lassen.

Wie das geht und welche Pfade man dabei verwendet, steht in der Doku.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sct14675

In der Doku finde ich nur Pfade für Icons usw., es sind aj auch gernelee Einstellungen. Ich möchte ja in einem bestimmten Raum ein definiertes Bild mit aufnehmen.
Wenn ich direkt in /opt/fhem/www gehe kann ich schon den Sourcecode direkt ändern. Das ist aber nicht ganz was ich machen will, mir wär was weniger invasives lieber.
Ich suche nach eienr ähnlichen Möglichkeit wie es aktuell mit dem Weblink geht >> Was leicht konfigurierbares, also als Modul eingebunden.

tschüss,
Tom

marvin78

Und wie kommst du darauf, dass das nicht mit lokalen Dateien geht? Das funktioniert sogar einwandfrei (warum auch nicht?). Du sagst nichts darüber was du versucht hast, wo deine Bilder liegen und welchen Fehler du bekommst (Log?).

sct14675

Hi,
wie geht es denn mit loakeln Dateien? Das war ja meine initiale Frage.
Die Bilder werden von FHEM aufgenommen und hier gespeichert: "/opt/fhem/pics/cam.Einfahrt_snapshot.jpg"
(Siehe 1. Post)

Wenn ich einen Weblink auf eine lokale Datei definiere, dann erscheint das Bild nicht, nur der Platzhalter in der definierten Breite:
define cam_einfahrt weblink image /opt/fhem/pics/cam.Einfahrt_snapshot.jpg
attr cam_einfahrt htmlattr width="640"
attr cam_einfahrt room Garage

Da der User fhem die Datei erzeugt hat, sollte doch der gleiche User auch wieder Zugriff drauf haben, es kommt auch keine Fehlermeldung!

tschüss,
Tom

marvin78

#5
Das funktioniert bei mir einwandfrei. Ich habe es gerade noch einmal getestet. Bist du sicher, dass das Bild dort liegt und das die Rechte korrekt sind? Hast du das kontrolliert?

Hast du das Bild mal im Browser direkt geöffnet? Deine URL muss natürlich relativ zur FHEM URL angegeben werden.

Deine URL müsste so lauten:

/fhem/pics/cam.Einfahrt_snapshot.jpg

Ich würde die Bilder allerdings unter ./www/snapshots ablegen.

Bitte demnächste Code-Tags und list (statt Screenshots) verwenden. Auch und betateilchen hat die dir Antwort schon gegeben. Es steht alles in der Doku. Und du hast deine Frage oben nicht korrekt gestellt. Es fehlen beinahe alle nötigen Infos.

sct14675

#6
Habs jetzt umdefiniert:
define cam_einfahrt weblink image ./www/snapshots/cam.Einfahrt_snapshot.jpg

Die Aufnahmedatei der IPCAM hab ich natürlich auch umdefiniert. Ich habs auch geprüft, die Datei liegt dort und hat die Rechte 755 (auch mit 777 gehts nicht), owner ist fhem:dialout.
Übrigens: Die Datei kann ich per yowsup (Whatsapp) ohne Probleme verschicken, es geht von beiden Pfaden mit absoluter Pfadangabe direkt aus FHEM.

Kannst du nicht dein define mal posten? Dann kann ich nach Unterschieden suchen.

und sorry, aber das versteh ich nicht
Zitat von: marvin78 am 11 März 2016, 08:30:10
Und du hast deine Frage oben nicht korrekt gestellt. Es fehlen beinahe alle nötigen Infos.

Zitat von: marvin78 am 11 März 2016, 08:06:21
Du sagst nichts darüber was du versucht hast, wo deine Bilder liegen und welchen Fehler du bekommst (Log?).
das steht im 1. Post:
Zitat von: sct14675 am 10 März 2016, 08:14:55
Ich kann per "get cam.Einfahrt image" ein JPG lokal abspeichern, und zwar in "/opt/fhem/pics/cam.Einfahrt_snapshot.jpg"
...

Mit einem WEBLINK IMAGE kann ich zwar ein JPG direkt von einem Webserver anzeigen lassen, also so:
define wb.camimage weblink image http://192.168.178.24:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2

Aber eine lokale Adresse scheint nicht zu funktionieren.
Ich dachte es wär klar, das mit lokaler Adresse statt http... das Verzeichnis /opt/fhem... versucht habe.
>> Werd ich das nächste mal deutlicher schreiben

und zu:
Zitat von: marvin78 am 11 März 2016, 08:30:10
Auch und betateilchen hat die dir Antwort schon gegeben. Es steht alles in der Doku.
"Es steht in der Doku" ist keine hilfreiche Antwort. Das ist der Anfängerbereich, wenn ich es in der Doku gefunden hätte, hätte ich nicht gefragt.
betateilchen hat von der Doku zum FHEMWEB gesprochen, der definiert aber den Server an sich und nicht einzelne Elemente. Ich kann leider in der Doku nirgends finden, dass nur relative Pfade erlaubt sind.
Die Commandref zum weblink ist mehr als spärlich. Auch dort steht nix von nur relativen Pfaden.

Sorry, wenn ich mich nicht auskenne: Ich suche eine Möglichkeit ein JPG darzustellen.
Anscheinend ist der "weblink" das gesuchte Element, aber weder in der commandref noch im Wiki steht ein Beispiel zu lokalen Pfaden, alles bezieht sich auf remote requests.

tschüss,
Thomas


marvin78

#7
Nein. Deine Infos im ersten Post sind nicht, die die ich beschrieben habe.

Wo habe ich denn geschrieben, dass du das so definieren sollst? Ich habe dir die URL oben doch gepostet. Ein wenig Transferleistung erwarte ich auch von einem Anfänger.


/fhem/www/snapshots/cam.Einfahrt_snapshot.jpg

Und ein Hinweis auf die Doku ist immer eine hilfreiche Antwort.

Edit: Warum sollte da auch ein Beispiel zu lokalen Pfaden stehen? Das kann bei jedem anders sein. Im Übrigen ist das kein FHEM Wissen. Da ist google der bessere Ansprechnpartner. Und genau auf diese Tatasache hat betateilchen oben den richtigen Hinweis gegeben. FHEM ist ein Webserver. Lokale Pfade hängen also davon ab, wo dieser Webserver läuft. Das siehst du aber in deinem FHEMWEB am besten selbst.

sct14675

das war eine schwere Geburt...

/fhem/pics/cam.Einfahrt_snapshot.jpg
Funktionierte nicht, da es wahrscheinlich ausserhalb des Server Contextes ist.

Aber dein zweites Beispiel hat dann die Lösung gebracht, dein Hinweis "relativ zur FHEM URL" hat mich in die falsche Richtung geführt.
Man muss ABSOLUTE Pfade aus Sicht des Webservers angeben.

Das heisst, für die Nachwelt dokumentiert, das hier ist die Lösung:

Falls man seine IPCAM z.B. folgendermaßen konfiguriert hat:
define cam.Einfahrt IPCAM 192.168.178.21:88
attr cam.Einfahrt delay 1
attr cam.Einfahrt path cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=user&pwd=password&
attr cam.Einfahrt snapshots 1
attr cam.Einfahrt storage /opt/fhem/www/snapshots

Die Bilder werden also in /opt/fhem/www/snapshots/ abgespeichert, jedesmal nur ein Bild mit dem Namen cam.Einfahrt_snapshot.jpg

Einbinden in das Webinterface geht dann mit folgendem Define:
define cam_einfahrt weblink image /fhem/www/snapshots/cam.Einfahrt_snapshot.jpg
(oder direkt aus dem Webbrowser dann aufrufbar unter http://myfhemserver:8083/fhem/www/snapshots/cam.Einfahrt_snapshot.jpg  , wobei myfhemserver der Name des Servers bzw. die IP Adresse ist.)

Evtl. sollte man die Doku mit einem Beispiel einer lokalen Datei erweitern, damit der Hinweis die Doku zu konsultieren auch letztendlich hilft.

Danke.