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
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.
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
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
Grund habe ich verstanden und kann ich nachvollziehen.
Erster Link geht nicht scheint wirklich generische zu sein, zweiter geht.
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,
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
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.
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
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.
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
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
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?&L=0&webcamid=S081&webcamtitle=A8%20Albaufstieg%20Blickrichtung%20Stuttgart" target="_blank" onClick="openPrintWindow(this.href, this.target); return false;"><strong>Seite drucken</strong></a>
-->
<img src="images/icon_schliessen.gif" width="11" height="9" alt="schliessen" />
<a href="javascript:self.close()" title="Diese Funktion benötigt JavaScript">
<strong>Fenster schließ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
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 :-)
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.
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
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
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
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