FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rohlande am 06 Juli 2017, 20:49:29

Titel: Bild von Stau Kamera
Beitrag von: rohlande am 06 Juli 2017, 20:49:29
Hallo Experten,

1. ich versuche das Bild folgender Adresse in Fhem einzubinden --> https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg?1499363236?1499364016929
2. ich möchte dieses mit Telegram empfangen können nachdem es in fhem ist.

Habe es mit IPCAM und Weblink versucht.
Leider kein Erfolg.

Kann mir jemand weiterhelfen???
Achso ich habe das Thema mit Telegram und Netzwerk Cam erfolgreich am laufen unter dem IPCAM Modul.
Vielleicht habe ich hier auch einfach eine falsche Vorstellung von der Umsetzung.

Vielen Dank vorab!

Gruss Denny
Titel: Antw:Bild von Stau Kamera
Beitrag von: Amenophis86 am 06 Juli 2017, 21:40:26
Bei mir geht der Link ja schon alleine nicht.

Du kannst theoretisch das Bild runterladen und dir dann schicken. Aber was ich nicht verstehe ist, wieso du es dir schicken willst, wenn es eh im Internet ist? Schick dir doch den Link und klick drauf, oder leg ihn dir als Icon auf den Homescreen.
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 06 Juli 2017, 21:48:48
Probier mal den Link Bitte!
https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg?1499370318  --> das ist der Link den man erhält wenn man die Eigenschaften im Firefox auswählt. Der zeigt es dann trotzdem an.

und das ist der Link welcher direkt funktioniert

https://www.svz-bw.de/fileadmin/templates/vizbw1/kameradetail.php?id=B01

Ich vermute es liegt am https..

Zu Deiner Frage: ich werde automatisch über den Traffic via TeleBot informiert zur bestimmten Zeit und ggf. Änderungen im Traffic. Das ganze soll jetzt zusätzlich ein Bild bekommen von kritischen Pkt, welche ich nicht EXTRA in der App aufrufen will bzw. während dem Autofahren nicht am Handy fummlen möchte. Es muss eine PopUp Info auf dem Display erscheinen sobald Telegram das Bild erhält.

VG

Denny
Titel: Antw:Bild von Stau Kamera
Beitrag von: chris1284 am 06 Juli 2017, 21:56:10
Zitat von: rohlande am 06 Juli 2017, 21:48:48
Ich vermute es liegt am https..

ich denke ehr das die nummer sich stehts ändert und nie die selbe ist. die seite selber wird das verzeichnis auswertenbzw immer das letzte erzeugte anzeigen.
man müsste also immer den aktuellen link zum bild evtl per httpmod in erfahrung bringen und dann weiter verwenden
Titel: Antw:Bild von Stau Kamera
Beitrag von: Amenophis86 am 06 Juli 2017, 22:34:05
Grund habe ich verstanden und kann ich nachvollziehen.

Erster Link geht nicht scheint wirklich generische zu sein, zweiter geht.
Titel: Antw:Bild von Stau Kamera
Beitrag von: steffen83 am 07 Juli 2017, 08:23:36
Ich bilde das gesamte wie folgt ab:

*14:50 { if($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5 && "1" eq "1")
{
my $Fahrzeit = ReadingsVal("FahrzeitDoBot","Fahrminuten","");;
if($Fahrzeit >= 37){
                   fhem ("set TelegramBot _msg Die Heimfahrt dauert längert als sonst: $Fahrzeit Minuten");;
                   {if($Fahrzeit >= 40){
                                      system("wget http://z.avinotec.de/pepimage/20647998621647526396.jpg? -O /tmp/1.jpg");
                                      system("wget http://z.avinotec.de/pepimage/20576487911720533278.jpg?t=0 -O /tmp/2.jpg");
                                      fhem ("set TelegramBot sendPhoto /tmp/1.jpg");;
                                      fhem ("set TelegramBot sendPhoto /tmp/2.jpg");;
                                      }}
                   }
else{
    fhem ("set TelegramBot _msg Die Heimfahrt ist wie gewöhnlich $Fahrzeit Minuten");;
    }
   
}
}
Titel: Antw:Bild von Stau Kamera
Beitrag von: hschuett am 07 Juli 2017, 12:37:16
Hallo,
der Parameter am Ende des Links ist praktisch "funktionslos", er "erzwingt" lediglich, dass z.B. der Browser das Bild jedesmal neu vom Server lädt und nicht den eigenen Cache verwendet.
Habe mir per weblink Bilder von Verkehrskameras in die FHEM-Oberfläche eingebaut, die sich regelmäßig autom. aktualisieren bzw. bei Klick auf das jeweilige Bild.
http://verkehr.rlp.de/syncdata/cam/340/thumb_640x480.jpg?'+Math.random()
Lasse mir den Parameter am Ende des Links einfach per random Funktion generieren, damit wird das .JPG jedesmal neu vom Server geholt. Das Verkehrsbild auf dem Server wird alle x Minuten unter gleichem Dateinamen aktualisiert.
Da der oben bereitgestellte Link sehr ähnlich ist, nehme ich an dass das zufällige Setzen des Parameters auch bei Dir funktionieren wird.

Der gesamte HTML-Code für den FHEM weblink sieht wie folgt aus:
<img src="http://verkehr.rlp.de/syncdata/cam/340/thumb_640x480.jpg?0.5637138095432244" width="640" height="480" title="Klick: aktualisieren" id="340" onclick="this.src=this.src.replace(/(\?\d\.)(\d)*$/, '?'+Math.random())" onload="setInterval(function() { document.getElementById(340).src='http://verkehr.rlp.de/syncdata/cam/340/thumb_640x480.jpg?'+Math.random() },120000)">

Grüße, Harald
Titel: Antw:Bild von Stau Kamera
Beitrag von: Markus M. am 07 Juli 2017, 14:30:20
Falsch.

Der letzte Part ist der Unix Timestamp des aktuellen Bilds und muss stimmen.
Da es immer nur ein aktuelles Bild gibt und alte Bilder nicht vorgehalten werden, ist immer nur genau eine Zahl gültig.

Die einfachste Methode ist wohl, den aktuellen Timestamp jeweils aus der HTML Seite auszulesen und dann sofort damit das Bild zu laden.
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 08 Juli 2017, 10:00:40
Hallo Zusammen,

Vielen Dank für die vielen Tipps und Eure Mühen. Das Forum ist echt immer wieder Klasse.
Ich werde es testen und hier ein Feedback einstellen.

VG Denny

Titel: Antw:Bild von Stau Kamera
Beitrag von: hschuett am 08 Juli 2017, 15:47:18
var timeInMs = Date.now();
alert(timeInMs);


UNIX Timestamp in JavaScript könnte über Date.now() ermittelt werden.
Wenn man nun diesen Parameter ans Ende der URL hängt, klappt es evtl. - vielleicht einen Versuch wert...
https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg?+Date.now()

Evtl. führt aber auch das nicht zum Ziel, da der URL Parameter zwar nicht am eigentlichen Dateinamen der JPG hängt, aber doch irgendwie den Aufruf des Bildes einschränkt. Wenn der Timestamp genau der von der Seite vorgegebene sein muss, dann bleibt evtl. nur das Auslesen (per HTML Parser) übrig.
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 11 Juli 2017, 21:22:45
Zitat von: hschuett am 07 Juli 2017, 12:37:16
Hallo,
der Parameter am Ende des Links ist praktisch "funktionslos", er "erzwingt" lediglich, dass z.B. der Browser das Bild jedesmal neu vom Server lädt und nicht den eigenen Cache verwendet.
Habe mir per weblink Bilder von Verkehrskameras in die FHEM-Oberfläche eingebaut, die sich regelmäßig autom. aktualisieren bzw. bei Klick auf das jeweilige Bild.
http://verkehr.rlp.de/syncdata/cam/340/thumb_640x480.jpg?'+Math.random()
Lasse mir den Parameter am Ende des Links einfach per random Funktion generieren, damit wird das .JPG jedesmal neu vom Server geholt. Das Verkehrsbild auf dem Server wird alle x Minuten unter gleichem Dateinamen aktualisiert.
Da der oben bereitgestellte Link sehr ähnlich ist, nehme ich an dass das zufällige Setzen des Parameters auch bei Dir funktionieren wird.

Der gesamte HTML-Code für den FHEM weblink sieht wie folgt aus:
<img src="http://verkehr.rlp.de/syncdata/cam/340/thumb_640x480.jpg?0.5637138095432244" width="640" height="480" title="Klick: aktualisieren" id="340" onclick="this.src=this.src.replace(/(\?\d\.)(\d)*$/, '?'+Math.random())" onload="setInterval(function() { document.getElementById(340).src='http://verkehr.rlp.de/syncdata/cam/340/thumb_640x480.jpg?'+Math.random() },120000)">

Grüße, Harald

Vielen Dank für den Tipp.
Leider funktioniert das nicht mit HTTPS

define A8_SVZ_CAM weblink htmlCode <img src="https://www.svz-bw.de/fileadmin/templates/vizbw1/kameradetail.php?id=B01" width="640" height="480" title="Klick: aktualisieren" id="B01" onclick="this.src=this.src.replace(/(\?\d\.)(\d)*$/, '?'+Math.random())" onload="setInterval(function() { document.getElementById(B01).src='https://www.svz-bw.de/fileadmin/templates/vizbw1/kameradetail.php?id=B01'+Math.random() },120000)">

VG Denny
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 11 Juli 2017, 21:50:01
Zitat von: steffen83 am 07 Juli 2017, 08:23:36
Ich bilde das gesamte wie folgt ab:

*14:50 { if($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5 && "1" eq "1")
{
my $Fahrzeit = ReadingsVal("FahrzeitDoBot","Fahrminuten","");;
if($Fahrzeit >= 37){
                   fhem ("set TelegramBot _msg Die Heimfahrt dauert längert als sonst: $Fahrzeit Minuten");;
                   {if($Fahrzeit >= 40){
                                      system("wget http://z.avinotec.de/pepimage/20647998621647526396.jpg? -O /tmp/1.jpg");
                                      system("wget http://z.avinotec.de/pepimage/20576487911720533278.jpg?t=0 -O /tmp/2.jpg");
                                      fhem ("set TelegramBot sendPhoto /tmp/1.jpg");;
                                      fhem ("set TelegramBot sendPhoto /tmp/2.jpg");;
                                      }}
                   }
else{
    fhem ("set TelegramBot _msg Die Heimfahrt ist wie gewöhnlich $Fahrzeit Minuten");;
    }
   
}
}


Hallo und Vielen Dank für das notify Beispiel. Werde ich vielleicht woanders  einsetzen.
Leider geht auch wget nicht in Kombination mit der HTTPS URL der SVZ WebCam.

wget https://www.svz-bw.de/fileadmin/templates/vizbw1/kameradetail.php?id=B01
--2017-07-11 21:13:54--  https://www.svz-bw.de/fileadmin/templates/vizbw1/kameradetail.php?id=B01
Auflösen des Hostnamens »www.svz-bw.de (www.svz-bw.de)« ... 193.197.148.118
Verbindungsaufbau zu www.svz-bw.de (www.svz-bw.de)|193.197.148.118|:443 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 200 OK
Länge: 3455 (3,4K) [text/html]
Wird in »»kameradetail.php?id=B01«« gespeichert.

kameradetail.php?id=B01             100%[================================================================>]   3,37K  --.-KB/s    in 0s     

2017-07-11 21:13:54 (11,2 MB/s) - »kameradetail.php?id=B01« gespeichert [3455/3455]


Es wird nicht wirklich ein Bild abgelegt sondern eine leere Datei.
Habe auch mit -r und level herumgespielt. leider ohne Erfolg. Ich bekomme das Bild nicht extrahiert.

VG Denny
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 11 Juli 2017, 21:58:58
Hier noch ein Auszug aus dem HTML Coder der Seite:

<div id="header">
  <div id="headerleft"></div>
</div>

<div id="centercontent">
<div id="webcamtitle"><h1>A8 Pfinztalbrücke (Remchingen-Nöttingen) Blickrichtung Karlsruhe</h1></div>
<div id="webcamimage"><img id='img1' src='/kamera/ftpdata/B01/B01_gross.jpg?1499802279' alt='webcam'/></div>
<div id="webcamfooter">
   <img src="images/icon_drucken.gif" width="12" height="9" alt="drucken" />
      <a href="#" target="_blank" onClick="window.print(); return false;"><strong>Seite drucken</strong></a>
     <!-- <a href="kamera.1.html?&amp;L=0&amp;webcamid=S081&amp;webcamtitle=A8%20Albaufstieg%20Blickrichtung%20Stuttgart" target="_blank" onClick="openPrintWindow(this.href, this.target); return false;"><strong>Seite drucken</strong></a>
   &nbsp;&nbsp; -->
   <img src="images/icon_schliessen.gif" width="11" height="9" alt="schliessen" />
   <a href="javascript:self.close()" title="Diese Funktion ben&ouml;tigt JavaScript">
     <strong>Fenster schlie&szlig;en</strong>
   </a>
</div>
</div>/code]

Ich glaube das aus dieser Zeile benötige ich wohl:

<div id="webcamimage"><img id='img1' [color=red]src='/kamera/ftpdata/B01/B01_gross.jpg?1499802279[/color]' alt='webcam'/></div>
                                                                                                                                                                        1499802895
                                                                                                                                                                        1499803059
                                                                                                                                                                         .
                                                                                                                                                                          .
                                                                                                                                                                           .

Und ja die Nr. ändert sich fortlaufend.

VG

Denny
Titel: Antw:Bild von Stau Kamera
Beitrag von: steffen83 am 12 Juli 2017, 08:32:18
Hallo Danny,
die richtige URL zum Bild lautet ja auch
https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg?1499841020

Und NICHT
https://www.svz-bw.de/fileadmin/templates/vizbw1/kameradetail.php?id=B01

dann klappt es auch mit dem download :-)
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 12 Juli 2017, 19:16:02
Keine Ahnung wie deine Download URL aussieht aber ich erhalte ein 403.
Also bei mir definitiv nicht......

wget https://www.svz-bw.de/kamera/ftpdata/B01/B01_klein.jpg?1499879439586
--2017-07-12 19:11:06--  https://www.svz-bw.de/kamera/ftpdata/B01/B01_klein.jpg?1499879439586
Auflösen des Hostnamens »www.svz-bw.de (www.svz-bw.de)« ... 193.197.148.118
Verbindungsaufbau zu www.svz-bw.de (www.svz-bw.de)|193.197.148.118|:443 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 403 Forbidden
2017-07-12 19:11:07 FEHLER 403: Forbidden.
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 12 Juli 2017, 20:17:56
Hallo Zusammen,

So jetzt funktioniert es.
Hinweis:

Referer ändern

Manche Downloadserver erlauben einen Download nur, wenn der Benutzer von einer bestimmten Adresse kommt. Diese ist immer die, von der normalerweise der Download startet. wget kann diesen Wert übernehmen:

Also sieht der String wie folgt aus:
wget -U mozilla  --referer=https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg? https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg? -O /media/public/Snapshots/Pfintztalbruecke_aktuell.jpg

SO jetzt schauen wir mal, ob es noch in meinem Telebot das tut was es soll und der 1 Step wäre erledigt.. :-)

@steffen83:
Vielen Dank für die Guten und Hilfreichen Tipps hier.

@hschuett:

Dein Ansatz funktioniert bei mir gar nicht. Ich vermute aber ich habe den define falsch aufgebaut.


Ist echt ein super Forum.

VG

Denny


So jetzt hänge ich am String welchen ich im Notify einsetzten möchte. Nur leider  bricht wget ab.
Habe den String wie folgt aufgebaut:
"wget -U mozilla --referer='https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg? https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg?' -O /media/public/Snapshots/Pfintztalbruecke_aktuell.jpg"
Dazu die Frage, muss ich die beiden hintereinander folgenden URL's in das Hochkomma setzen oder jede URL einzeln? Finde dazu nichts im Forum, da alle Beträge ohne Referer ausgeführt sind.

VG Denny
Titel: Antw:Bild von Stau Kamera
Beitrag von: hschuett am 12 Juli 2017, 20:36:37
Der Parameter den ich für die RLP Verkehrskameras setze ist nur ein numerischer Zufallswert, der dort von der Seite selbst aber so ähnlich intern gesetzt wird. Die SVZ-BW Seite setzt ja auf scheinbar auf Timestamps, deshalb mein (ungetesteter) Vorschlag mit der Date.now() Funktion von JS...scheinbar lag's am Ende am Referer und gar nicht mal an an Parametern...
Der HTML Code an sich (mit Klick bzw. AutoIntervall Update der Bilder) funktioniert bei mir und ist auch seit ca. 6 Monaten im Einsatz. Ggf. müssest Du hier ebenfalls bei Aufruf per weblink den Referer nochmals irgendwie richtig setzen...wobei mir nicht bekannt ist, ob der FHEM weblink sich den Referer passend setzten läßt.
Grüße, Harald
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 12 Juli 2017, 21:53:54
Du hast mich eigentlich erst auf die Idee  ;) gebracht genau hin zu schauen was da wirklich passiert. Und als mir das mit dem Timestamp auffiel habe ich zwar Deinen Ansatz nicht wirklich verstanden (bin kein SW Entwickler) aber das hat dazu geführt zu schauen was an der Stelle möglich ist mit wget.
Und da bin ich durch Zufall auf den Referer gestoßen, da ich ständig die 403 erhalten habe was mich verwirrt hat, da es per Rechtsklick im Browser ohne Probleme lief nur halt nicht im Terminal.
Da dachte ich schon ich mach was im Terminal falsch.

Naja so lernt man was dazu.

Aber trotzdem Vielen Dank für die Anregung.
Jetzt ist erst mal Feierabend.

VG Denny
Titel: Antw:Bild von Stau Kamera
Beitrag von: rohlande am 12 Juli 2017, 22:16:19
Hallo Zusammen,

Also es funktioniert wie erhofft mit dem Notify Vorschlag.
Den String habe ich hinbekommen. Hatte noch zwei Fehler drin. Habe den Laufwerkspfad von dem mount Point verwendet und die URL's müssen jede für sich in die Hochklammern, damit "wget" sauber funktioniert.
Also hier der funktionierende String dazu:

system("wget -U mozilla --referer='https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg?' 'https://www.svz-bw.de/kamera/ftpdata/B01/B01_gross.jpg?' -O /volume1/public/Snapshots/Pfintztalbruecke_aktuell.jpg");;

Ich schließe hier als erledigt ab!

VG Denny