• In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien der Eigenmarken "Upscreen", "Brotec", "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Mitmachen beim DSLR-Forum Fotowettbewerb März 2025!
    Thema: "Detail"

    Jeden Monat attraktive Gewinnprämien, gesponsert von unserem Partner PixelfotoExpress.
    Alle Infos zum März-Wettbewerb hier!
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

FileReceiver für die Transcend WiFI SD Karte

Wenn du das Webinterface der Karte aufgerufen hast kannst du über Settings - WiFi-Settings die IP-Adresse der Karte konfigurieren.
Übersehen, sorry. Da hatte ich sogar geschaut, aber irgendwie nicht wahrgenommen :o. Danke. Lustig dass die IP am Ende nicht 11-50 verwenden darf :confused:.
 
Hi,

ich musste tatsächlich nur die Zeile mit wget durch curl ersetzen und dann gehts.
Die Zeile sieht dann bei mir wir folgt aus:

my $wget = join("","curl -sO http://",$User,":",$Password,"@",$CardIP,$datagram1,);

Hier wäre es wohl sinnvoll, einen Mechanismus zu implementieren, der die verschiedenen Download Tools testet und das entsprechend vorhandene auswählt.

Dann läufts auch unter macos.

Beste Grüße und vielen Dank für dieses praktische Tool!
 
Danke für die Rückmeldung!
Ob ich das automatisch hinbekomme weiß ich nicht, ich werd das aber gleich mal als Option in den Userkonfigbereich einbauen.

Gruß,
Sven
 
So, habe nun noch etwas rumprobiert,
wenn man mehrere Bilder in schneller Abfolge macht, kommt das Skript auch durcheinander.
Habe aber noch keine Lösung dafür.

Viele Grüße

P.S.: Ok, habe gerade gesehen, dass dieses Verhalten auch im Readme Text beschrieben ist.
 
Zuletzt bearbeitet:
Vielen Dank für das Script. Läuft super. Es werden jedoch immer noch "wgetlog" Dateien angelegt. Für was sind die da?

Nochmals herzlichen Dank für die Entwicklung!!

Thomas
 
Hallo Thomas,

danke für die Rückmeldung.
Logdateien sind mir bisher nicht aufgefallen, wo liegen die denn?

Gruß,
Sven
 
Lieber Sven,

habe soeben Dein tolles Script unter OS X 10.8 ausprobiert und wget durch curl ersetzt. Karte wird gefunden, dann offenbar das Foto geladen - im Terminal schreibt er wie wild Symbole -, aber nirgends gespeichert. Am Ende der Sequenz kommen ein paar hundert Fragezeichen. Wird die Datei womöglich nicht richtig geschlossen?

Gruß
Michael
 
Hi Michael,

du hast die Änderung wie von Instinct beschrieben durchgeführt?
Da ich selber kein einziges Applegerät besitze kann ich dazu leider gar nichts sagen...

Eigentlich sollten die Bilder dort landen wo das Script auch liegt...

Gruß,
Sven
 
Sehr interessantes Projekt !!

Ich nutze Umbutu und nachdem ich heute die kabelgebundene shoot and view Lösung mit entangle zufriedenstellend gelöst habe, bin ich auf dein Projekt gestoßen, da eine drahtlose Variante ja noch interessanter ist.

Das ist auch der Anlass meines Posts, für mich ist eine reine Drahlose Übertragung nicht wirklich interessant, ich brauche die sofortige Anzeige auf dem Monitor, zur Überprüfung des Bildmaterials während des Shootings.
Und so wie ich dich verstanden habe, ist das auch das Ziel des Projekts.

Ich hab die WiFi-Karte jetzt noch nicht zum testen, aber wollte mich einfach mal mit einem Lösungsansatz melden.
Ich hab das einfach mal mit shotwell getestet, vielleicht könnte man das in der config hinterlegen um das universeller zu gestalten:
wenn ein neues Bild gefunden wurde:

system ("killall shotwell"); // altes Bild schliessen
system ("shotwell dateiname &"); // shotwell im hintergrund starten
also in deinem fall (wenn ich das richtig verstanden habe ??) system ("shotwell ",$datagram1," &");
 
Zuletzt bearbeitet:
Hm, Interesanter Ansatz, ja. Werde ich mal ausprobieren. Allerdings werde ich wohl im September nichtmehr dazu kommen, Hochzeit und Flitterwochen stehen an. Ab Oktober dann wieder :) Danke für die Idee!
 
Freut mich dass dir das Konzept gefällt :).

Ich hab die Karte bestellt, konnte aber noch nicht testen.
Ansonsten hab ich das schon mal so getestet, also mit einer lokalen jpg, das war kein Problem...

Ist zwar Quick and Dirty, aber dafür gibts keine Probleme mit RAWs.

Erstmal Dir viel Spass beim heiraten und im Urlaub.
 
Ich bin kein Linux Spezi, aber habt ihr mitbekommen, dass die Transcend kürzlich 'gehackt' und damit gerootet wurde? Vielleicht lässt sich das von Spezialisten auch nutzbringend verwenden :).
 
Ja, mitbekommen schon. Nur fehlt mir ehrlich gesagt im Moment die Idee was man unbedingt nachrüsten müsste... Wer da eine Idee hat... :D
 
Ja, mitbekommen schon. Nur fehlt mir ehrlich gesagt im Moment die Idee was man unbedingt nachrüsten müsste... Wer da eine Idee hat... :D
Ja, ich denke im Rahmen ihrer Möglichkeiten tut die Karte was sie soll. Da man auch praktisch kein UI für Zusatzfeatures hat, würde vieles die Sache nur verkomplizieren :).
 
Meine Karte ist gestern auch gekommen...:)
und sie tut auch was sie soll.
Jetzt hab ich mich an diesem Shoot n View versucht...eigentlich funktioniert das auch, aber eben doch nicht ganz:
Also ich hab unter system($wget); folgendes eingefügt:

Code:
system($wget); 
      my @arr = split('/',$datagram1);
      my $arr_length = @arr;
      my $new_photo = $arr[$arr_length-1];
      
      print "Open ".$new_photo."\n";
      sleep(10);
      system("killall shotwell");
      
      #system("shotwell DSC_0172.JPG &");
      system("shotwell $new_photo &");
     
      print "test\n";

Aber, wie es machmal so ist im Programmierleben, wenn ich die Zeile
Code:
system("shotwell DSC_0172.JPG &");
benutze (also eine Datei benutze die schon mal runtergeladen worden ist)
und die darunterliegende Zeite auskommentiere...funktionierts perfekt...
natürlich mit dem entscheidenden Nachteil, dass immer das selbe bild in shotwell geöffnet wird, wenn ich ein neues Foto sçhiesse, nicht soo ganz der Effekt, den ich mir vorgestellt hab. :)

Wenn ich den oben eingefügten Code verwenden, kommt er nicht zum print test :(
Obwohl ich die zeit schon auf 10 sek sleep eingestellt hab, und er eigentlich nur 3 sek zum downloaden braucht...
Er stellt also das erste Bild nach dem starten des Scripts dar, und dann muss ich shotwell schliessen, damit das script weiterläuft...

Aber ich muss auch zugeben, ich hab keine ahnung von perl...da muss ich wohl nochmal suchen...
 
Gelöst :)

Code:
#system('wget http://admin:admin@192.168.11.254/sd/DCIM/200MSDCF/_DSC3233.JPG');     
      my $wget = join("","wget -bqc http://",$User,":",$Password,"@",$CardIP,$datagram1,);
      system($wget); 
      @arr = split('/',$datagram1);
      $arr_length = @arr;
      $new_photo = $arr[$arr_length-1];
      $new_photo =~ s/[^[:print:]]+//g;

      print "Open #".$new_photo."#\n";
      sleep(3);
      system("killall shotwell");
      system("shotwell $new_photo &");

Jetzt öffnet er das Bild direkt im Shotwell nach dem Download :)

Falls das jemand benutzen möchte (wahrscheinlich nur für Mac und Linux geeignet) müsstet Ihr die sleep(3); Zeile unter Umständen anpassen.
Ich benutze das aktuell so, dass ich auf meiner CF-Karte die RAWs speichere, und mir über die SD-WLAN-Karte nur kleine jpg's herunterlade, die auf höchster Stufe komprimiert sind.
Falls jemand damit wirklich RAWs downloaden will, müsste man die Zeit hochsetzen:

z.B. sleep(10);

Aber ich schau da auch nochmal ob es dafür eine vernünftige Lösung gibt, die unabhängig von der Zeit arbeitet, die man für den Download braucht.
 
Zuletzt bearbeitet:
Super, danke dir!

Unabhängig von der Zeit wirst du wenn du beim wget den Parameter b weglässt, der schickt den Download in den Hintergrund. Wenn der Parameter nicht dabei ist wird der wget ausgelöst und das restliche Skript so lange angehalten bis wget fertig ist, auf welche Art und Weise auch immer (sprich Erfolgreich oder eben auch nicht). Dann solltest du die Pause mit sleep nichtmehr brauchen.

Schade das wir das Photobooth heute abend für die eigene Hochzeit morgen schon aufbauen, sonst hätte ich das gleich noch Implementieren können ;)

Gruß,
Sven
 
Supie getestet...funktioniert.

Ich hab zu danken, ohne deine Projekt, würde ich immer noch am Kabel hängen :)

Jetzt muss ich noch ein Problem lösen, um wirklich happy zu werden. Aktuell öffnet der den shotwell immer in einem kleinen Fenster.
Schön wäre ja Vollbild.

Naja, Dir erstmal eine fröhliche Hochzeit, lass es Krachen :)
 
Code:
#!/usr/bin/perl

use strict;
use warnings;
use IO::Socket::INET;
use Net::Ping;


# ==== Config by User! ====
my $BroadcastIP = "192.168.178.24"; 
my $User="admin";
my $Password="admin";
my $Viewer="eog";
my $Viewer_arg="-f";
# ==== End Config by User / No Changes behind this line ====


my $CardIP = "0.0.0.0";
my $new_photo = "";
my @arr;
my $arr_length;

START:
#Check if card is alive and if so go to Shoot&View mode

print "Searching card...\n";
&GoFindCard;
#print "\nFound Card: ",$CardIP,"\n";


if (&KeepCardAlive eq "OK") {
  print "\nEnabling Shoot&View Mode\n";
  my $ShootAndView = IO::Socket::INET->new(Proto=>"tcp",PeerPort=>5566,PeerAddr=>$CardIP) 
    or die "Can't make TCP socket: $@";

  my ($datagram1,$flags1);

  until(1!=1) {  
    eval {
      local $SIG{ALRM} = sub { die "alarm\n" };
      alarm 5; # Set Timer to check if card is still alive every XX seconds by TCP ECHO (not ICMP!)

      $ShootAndView->recv($datagram1,250,$flags1);
      alarm 0; # if we get a info about new files we disable the alarm here
    };
  
    if ($@) {
      die unless $@ eq "alarm\n"; #if we got the alarmtime we have to check if card is alive
      
      #if card is unreachable we have to find it again!
      if (&KeepCardAlive eq "NOK") { 
        print "\nClosing Shoot And View...\n";
        close($ShootAndView);
        print "Back to start...\n";
        goto START;
        };
      }
    else {
      print "\nThere's something new on ", $ShootAndView->peerhost,": $datagram1\n"; 
      #And now for some regex! --> Remove >/mnt from >/mnt/sd/DCIM/200MSDCF/_DSC3233.JPG
      $datagram1 =~ s/^>\/mnt//;

      #system('wget http://admin:admin@192.168.11.254/sd/DCIM/200MSDCF/_DSC3233.JPG');     
      my $wget = join("","wget -qc http://",$User,":",$Password,"@",$CardIP,$datagram1,);
      system($wget); 
      @arr = split('/',$datagram1);
      $arr_length = @arr;
      $new_photo = $arr[$arr_length-1];
      $new_photo =~ s/[^[:print:]]+//g;
      print "Open ".$new_photo."\n";
      system("killall $Viewer");
      system("$Viewer $Viewer_arg $new_photo &");
    };
  };
}
else {
  print "\nNothing found. Waiting 10 Seconds...\n";
  sleep(10);
  goto START;
};

sub KeepCardAlive {
  my $RC;
  #Keep Card Alive!
  #Client sendet TCP an 192.168.11.254; Source Port variabel; Destination Port 7; Flag Set SYN
  #Karte sendet TCP an 192.168.11.12; Source Port 7; Destination Port variabel; Flag Set ACK; RST

  my $p=Net::Ping->new('tcp');

  if ($p->ping($CardIP, 5)==1) {
    $RC = "OK";
  }
  else {
    $RC = "NOK";
  };

  return($RC);
};

sub GoFindCard {
  #Find Transcend SD WiFi Card
  #Sending UDP stolen by: http://www.perlmonks.org/?node_id=129521
  STARTFIND:

  eval {
    local $SIG{ALRM} = sub { die "alarm\n" };
    alarm 5; # Set Timer to wait for card to answer, aboard and retry if card doesn't answer.

    #Open Port for Broadcast
    my $FindCard = IO::Socket::INET->new(Proto=>"udp",LocalPort=>58255,PeerPort=>55777,PeerAddr=>$BroadcastIP,Broadcast=>1) 
      or die "Can't make UDP socket for Broadcast. Reason: $@";

    #Send some nonsense, original AndroidAPP also does this
    $FindCard->send("");
    #Close Broadcastport
    close($FindCard);

    #Open Port for receiving Unicast from card (hopefully!)
    my $recvCard = IO::Socket::INET->new(Proto=>"udp",LocalPort=>58255)
      or die "Can't make UDP socket for catching Unicast. Reason: $@"; 
  
    my ($datagram,$flags);
    $recvCard->recv($datagram,200,$flags); #Datagramm may be longer than 200 chars! (depending on SSID!)
  
    if (index($datagram,"Transcend WiFiSD")>=0) {
      #print "Found Card!\n", $FindCard->peerhost,", flags ",$flags || "none",": $datagram\n";
      $CardIP=$recvCard->peerhost;
    };
    close($recvCard);
    alarm 0;
  };

  if ($@ eq "alarm\n") {
    print "No Transcend Card Found, trying again...\n";
    goto STARTFIND;
  };
};

Nachdem ich gefühlte 100 Viewer unter Linux getestet hab, hab ich endlich die Lösung:

Eye of Gnome (der Standard-Viewer in Ubuntu)

hätte ich das vorher geahnt...
shotwell hat sein comand-line arg für Vollbild
zgv (war ein versuch), dann hätte man das auch direkt in der Konsole starten können, also komplett ohne grafische Oberfläche
xzgv erkennt die Orientierung nicht (unterscheidet kein Hoch und Querformal)
usw., usw.

ich hab den Viewer jetzt nach oben in die Config gesetzt und noch eine Variable für das Arg hinzugefügt.
Jetzt ist das wirklich klasse, Vollbild das Bild -> neues Foto wird geschossen -> Kurzes Blinken und neues Bild erscheint im Vollbild :)

Mir fällt gerade ein, eine Sache werd ich gleich nochmal einbauen.
Ich finds irgendwie ungünstig das script und Bilddaten am selben Ort liegen.
Ich bau in die Config nochmal einen Pfad an, an dem die Bilder gespeichert werden sollen.
 
Zuletzt bearbeitet:
WERBUNG
Zurück
Oben Unten