Verschiedene Positionen anfahren

Ich habe derzeit auf http://lindner.ms/webcam-carport/ das so gelöst das man den gewünschten Link anklickt z.B. http://oliver.dd-dns.de:82/decoder_control.cgi?command=31&user=gast&pwd=gast für Carport. Nun kommt man aber auf die „ok Seite“ von der Kamera und muss erst wieder im Browser auf zurück klicken.

Gibt es dafür eine bessere Lösung?

Hallo,
einen Post unter Deinem…
http://forum.instar.de/showthread.php?1687-CGI-Befehle-in-Homepage-einbinden

achja, gesundes Neues

Gruß felixs

Danke, ebenso gesundes neues!

Den Post habe ich gesehen aber leider funktioniert es bei mir nicht.


tja scheint so einiges nicht zu funktionieren…
ich hab die HD 6012 seit ein paar Tagen hier 1m neben der FB zu stehen und krieg sie nicht ins WLAN,FTP geht nicht (auf’n eigenen Server, FB geht komischerweise), die geposteten Scriptaufrufe hab ich
probiert - gehen bei mir auch nicht ! Support ist informiert, mal sehen was das Instar Team sagt/schreibt.
Dein Problem scheint aber mehr im HTML zu liegen …

Gruß felixs

ich hab die HD 6012 seit ein paar Tagen hier 1m neben der FB zu stehen und krieg sie nicht ins WLAN,FTP geht nicht (auf’n eigenen Server, FB geht komischerweise), die geposteten Scriptaufrufe hab ich probiert - gehen bei mir auch nicht !

http://lindner.ms/
das obere Bild ist eine IN-5907 HD und das untere eine IN-3010. Grundsätzlich bin ich zufrieden. Nur mit der Programmierung für die Webseite komme ich nicht klar.

Hallo,
hast mich angestachelt :wink: . Ich habe mal den horizontal Scan der 6012
http://user:userPW@myIP:myPort/cgi-bin/hi3510/ptzctrl.cgi?-step=0&-act=hscan%22%20target=%22_blank
an meine Cam geschickt - die zuckt nichtmal !? Weder lokal noch übers Inet.
Ich kann Dir also keine Hilfe geben, leider.
Aber ich muss sowieso erstmal meine anderen Problemchen in den Griff bekommen ehe ich mich an die Programmierung machen kann …

Feierabend für heut Gruß felixs

klick mal
http://www.wcm.at/forum/showthread.php/einbindung_ip_cam_webpage_ber_cgi_kommandos-233080.html?s=2cd1fc9876a846a18fd30d311bad6fda&p=2344509
oder
http://blog.moneybag.de/hootoo-wlan-pan-tilt-ip-webcam-ein-erfahrungsbericht/

Manchmal ist ja was dabei …so als Denkanstoß :slight_smile:

Danke für die Links, ich schaue mir das mal an.
Ich mache auch Schluss für heute.

Schönen Abend

Hallo,
ich hab mal bissel rumgesucht …

gefunden hab ich
„next_url: an option param. If you don’t want only return a simple “OK” when set succeed, you can add a param in the end next_url. The param is the next file it jump to when set succeed. The param must be a Relative path“

hier : https://gist.github.com/prasincs/4465801

Foscam weist auch darauf hin
„Besides, if you don’t want to the cgi only return “ok” text when succeed but a file. In this case, you can add
one param into cgi param url: next_url. The parameter that corresponds to the operation is successful jump
to the next file, note that must be a relative path“

hier auf Seite 9
http://www.robotgarden.org/wp-content/uploads/2013/05/ipcam_cgi_sdk.pdf

…viel Spaß beim probieren, achja lass es mich wissen wenn Du eine Lösung hast - spart mir das Rumprobieren… :wink:

Gruß felixs

Der INSTAR Support hat mir geschrieben:

  1. Jeder Befehl verfügt über den möglichen Parameter ‚next_url=‘ damit können Sie eine Webseite festlegen welche nach dem ausführen des Befehls geladen wird.

Somit könnte man man z.B. folgendes machen:

http://oliver.dd-dns.de:82/decoder_control.cgi?next_url=namederWebseite.de&command=31&user=gast&pwd=gast

an die Kamera senden und damit dann die Seite neu laden.

  1. Eine elegantere aber auch komplizierte Methode ist das versenden von einem AJAX Http Reqeust. Dieser sendet den Befehl im Hintergrund an die Kamera ohne, dass die Webseite neu geladen wird.

Einige Hilfen hierzu finden Sie z.B. unter
http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

Wir hoffen das Ihre Frage ausreichend beantwortet wurde. Sollten Sie Rückfragen haben so erstellen Sie bitte kein neues Ticket sondern benutzen Sie nachfolgenen Link für weitere Anfragen.

Leider klappt das auch nicht, ich schon geantwortet.

Ich würde auch die Ajax Lösung bevorzugen:
du hängst an deine Links ein Javascript an, dass die Kamera dreht und startest einen Timer für das Refresh des Bildes.
Ich habe eine mögliche Lösung mal unter http://pencl.de/test/inmove.html bereitgestellt.

Der Trick:
<a href="#" onclick=„moveToPos(‚terasse‘);“>Terrasse hinten</a>
<a href="#" onclick=„moveToPos(‚carport‘);“>Carport</a>

Bei jedem Klick auf einen Link wird durch moveToPos(‚Ort‘) eine Javascript Funktion aufgerufen:

function moveToPos(placetogo){[INDENT]pos = 0;[/INDENT]
[INDENT]switch(placetogo){[/INDENT]
[INDENT=2]case „terasse“:{pos = 33;break;}[/INDENT]
[INDENT=2]case „carport“:{pos = 31;break;}[/INDENT]
[INDENT=2]default: {pos = 33;break;}[/INDENT]
[INDENT]}
jQuery(’#webcam’).attr(„src“, „http://pencl.de/test/wait_animation.gif“);[/INDENT]
[INDENT]jQuery.ajax(„http://oliver.dd-dns.de:82/decoder_control.cgi?command=“+ pos +"&user=gast&pwd=gast");[/INDENT]
[INDENT]window.setTimeout(
[/INDENT]
[INDENT=2]function(){
[/INDENT]
[INDENT=3]d = new Date;
jQuery(’#webcam’).attr(„src“, „http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast&rand=“+d.getTime());
[/INDENT]
[INDENT=2]},
10000);
[/INDENT]
}[INDENT]
[/INDENT]

Die Funktion legt anhand des Namens einen Positionsparameter fest (switch Anweisung) und sagt dann der Kamera im Hintergrund, wohin Sie sich bewegen soll (jQuery.ajax()). Mit window.setTimeout() wird dann festgelegt, dass das Bild sich nach 10 Sekunden neu laden muss. Das angefügte Datum d.getTime() stellt dann sicher, dass das Bild auch wirklich neu geladen wird und nicht aus dem Browser Cache kommt.

Gruß, HannesFr

Nachtrag: Noch besser wäre, die Benutzung des <a> Elementes zu vermeiden. Aber das ist dann nur noch Kür.
Nachtrag2: Ich werde die von mir veränderte Seite auf pencl.de in den nächsten Tagen wieder entfernen.
Nachtrag3: Ich habe noch einen Wartekreisel zwischengeschaltet, damit dem Nutzer klar ist, dass da noch was kommt.
Nachtrag4: Damit das ganze funktioniert, muss natürlich das Bild mit dem id=„webcam“ - Attribut versehen werden.
Nachtrag5 (jetzt aber der Letzte): Man könnte darüber nachdenken, wenn sowieso eine eigene Wordpress Installation vorliegt, ein Relay einzubauen, damit nicht direkt die Kamera aufgerufen wird, sondern eventuell eine Zwischenstufe. Damit bleibt die Adresse der Kamera maskiert. Also z.B. http://lindner.ms/cam.php?action=move&cam=1&pos=terasse bzw. http://lindner.ms/cam.php?action=snapshot&cam=1 damit wäre das dann noch eleganter gelöst, ohne dass z.B. der Router bzw. hier die Synology DiskStation nach aussen hin sichtbar ist. Der Sicherheit wegen.

Hallo hannesfr,

vielen Dank das sieht doch sehr gut aus so.

Leider habe ich da keine Ahnung und würde gerne wissen wo ich den Code im Wordpress einbauen muss?

Vielen Dank für die Hilfe.

Wenn ich den Code normal einbaue kommt das:
http://lindner.ms/webcam-test/

Hmm, das sieht insgesamt gut aus.
In Zeile 104 (direkt hinter dem Script) sind zwei <p> Tags zuviel. Ich würde das dann eher so machen:

<p>Gewünschte Kameraansicht … Bild zu sehen sein.</p>
<script>
function …
</script>
<table>

Dann sollte es besser gehen.

Ach ja: die Datei http://pencl.de/test/wait_animation.gif sollte natürlich von deinem eigenen Server verlinkt werden, da ich die Dateien demnächst wieder löschen werde.
Man kann natürlich auch die ganze Zeile aus dem Script löschen, dann wir aber kein Kreisel mehr angezeigt, während die Kamera die neue Position anfährt.

Vielen Dank aber im Wordpress wo ich auf der Seite alles Eintrage steht nur:

<div class=„entry-content“>
<p>Gewünschte Kameraansicht anklicken und auf diese Seite zurückkehren. Nach ca. 10 Sekunden (Browser aktualisieren) sollte das gewünschte Bild zu sehen sein.</p>
<script>
function moveToPos(placetogo){
pos = 0;
switch(placetogo){
case „terasse“:{pos = 33;break;}
case „carport“:{pos = 31;break;}
default: {pos = 33;break;}
}
jQuery(‚#webcam‘).attr(„src“, „http://pencl.de/test/wait_animation.gif“);
jQuery.ajax(„http://oliver.dd-dns.de:82/decoder_control.cgi?command=“+ pos +„&user=gast&pwd=gast“);
window.setTimeout(function(){d = new Date; jQuery(‚#webcam‘).attr(„src“, „http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast&rand=“+d.getTime());}, 10000);
}

	&lt;/script&gt;
	&lt;table border="0"&gt;
		&lt;tbody&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;a href="#" onclick="moveToPos('terasse');"&gt;Terrasse hinten&lt;/a&gt;
				&lt;/td&gt;
				&lt;td&gt;
					&lt;a href="#" onclick="moveToPos('carport');"&gt;Carport&lt;/a&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/tbody&gt;
	&lt;/table&gt;
	&lt;div style="width: 586px" class="wp-caption alignleft"&gt;
		&lt;a href="http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast"&gt;
			&lt;img class="" id="webcam" title="Webcam - Livebild" alt="Webcam - Livebild" src="http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast" width="576" height="432" /&gt;
		&lt;/a&gt;
		&lt;p class="wp-caption-text"&gt;Webcam – Livebild&lt;/p&gt;&lt;/div&gt;
	
	
	&lt;/div&gt;

					&lt;div id="comments"&gt;

</div><!-- #comments –>

da finde ich nicht 2 x </p> Und die Links (Terrasse hinten / Carport) gehen auch nicht.

Entferne am Ende des Scripts mal die Umbrüche, so dass da steht:

}</script>

Ich glaube Wordpress bastelt da die <p> Elemente rein.

Achso: weil da die <p> Elemente stehen, kann das Script nicht ausgeführt werden. Daher funktioniert derzeit auch nichts.

Entferne am Ende des Scripts mal die Umbrüche, so dass da steht:

}</script>

OK nun gehen die Links aber nach der Zeit wird kein Bild geladen und die Cam dreht sich nicht.

http://lindner.ms/webcam-test/

Jupp. Das kommt von deinem Copy-Paste :slight_smile:
Meine Zeichen sind utf-8 formatiert. Also:

In diesen beiden Zeilen:
jQuery.ajax(„http://oliver.dd-dns.de:82/decoder_control.cgi?command=“+ pos +"&user=gast&pwd=gast");
window.setTimeout(function(){d = new Date; jQuery(’#webcam’).attr(„src“, „http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast&rand=“+d.getTime());}, 10000);

die Vorkommen von & durch ein schlichtes & ersetzen.

Ich habe mal einen Screenshot angehängt, da existiert kein &#038

Argh - Wordpress!
Anbei mein Screenshot.

Nichts desto trotz: schreibe in den beiden Zeilen einfach mal alle & Zeichen neu und von Hand.
Klingt stumpf, kann das Problem aber lösen. Der Browser interpretiert meine Zeichen richtig, Wordpress bei der Ausgabe aber nicht.

Das sollte bei dir ähnlich aussehen, wenn du dir die Seite im Browser anzeigen lässt und auf man den Seitenquelltext anschaust.

Ich habe nun das eingetragen:

<script>
function moveToPos(placetogo){
   pos = 0;
   switch(placetogo){
      case "terasse":{pos = 33;break;}
      case "carport":{pos = 31;break;}
      default: {pos = 33;break;}
}
jQuery('#webcam').attr("src", "http://lindner.ms/wp-content/uploads/2014/01/wait_animation.gif");
jQuery.ajax("http://oliver.dd-dns.de:82/decoder_control.cgi?command="+ pos +"&user=gast&pwd=gast");
window.setTimeout(function(){d = new Date; jQuery('#webcam').attr("src", "http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast&rand="+d.getTime());}, 5000);
}</script>

Problem ist das er die URL

http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast&rand=

nach

http://oliver.dd-dns.de:82/snapshot.cgi?user=gast&pwd=gast&rand=1388842333789

umwandelt.

Die Encodierung stimmt noch immer nicht.

Ich nehme an, dass in deinem Codebeispiel das & # 038; auch steht. Ich könnte dir anbieten das in deiner Wordpress installation zu erledigen, wenn ich einen Zugang bekäme.
Ich habe jetzt die Encodierung meiner Beispielseite noch mal geändert. Evtl kannst du es noch einmal aus meinem Quelltext kopieren (nur die jQuery.ajax und window.setTimeout Zeile).

Wenn es nicht geht, biete ich dir an, es über deine Worpress installation zu erledigen. Dann schreib bitte eine PM, damit ich dir meine eMailadresse zukommen lassen kann.