Forum: Mikrocontroller und Digitale Elektronik NETIO Webcambilder abrufen & speichern


von Walter (Gast)


Lesenswert?

Bei mir arbeitet ein AVR-NETIO Server mit der Software von U.Radig. Im 
gleichen Netz habe ich zwei Webcams deren (Stand)Bilder ich abrufen und 
auf der SD-Card des NETIOs speichern möchte.

Wer kennt sich mit der Radig-Software aus und kann mir sagen, wie die 
Bilder von Radig-Software abgerufen werden?

von Michael U. (amiga)


Lesenswert?

Hallo,

Walter schrieb:
> Wer kennt sich mit der Radig-Software aus und kann mir sagen, wie die
> Bilder von Radig-Software abgerufen werden?

garnicht. Das mußt Du erst programmieren.
Erstmal mußt Du wissen, wie Du von den Kameras Dein Standbild 
anforderst.
Kannst Du ja sicher am PC schauen.
Das muß dann Deine Software an die Kamera schicken.
Dann muß Du wissen, wie die Kamera die Bilder schickt, also mit welchen 
Headern usw.
Das mußt Du dann auf dem NetIO auswerten. Die Daten mußt Du dann 
stückweise auf die SD-Card schreiben.

Ende vom Lied: laß es. schon wegen des knappen Rams auf dem Netio nahezu 
aussichtslos. Da das Timing, die Kamera muß ja auch geduldig genug sein, 
beim Abholden des Bildes zu warten, bis Du die Krümel mit der lahmen 
Rate auf die SD-Card bekommen hast ohne in irgendeinen Timeout zu gehen 
und abzubrechen.

Nimm einen RasPi o.ä dafür.

Gruß aus Berlin
Michael

von Johannes S. (Gast)


Lesenswert?

Michael U. schrieb:
> Nimm einen RasPi o.ä dafür.

Full Ack, mit 'motion' Paket, das macht genauso etwas. Mit 
Bewegungserkennung, Streaming, Speichern als Bild oder AVI usw.

von Walter (Gast)


Lesenswert?

Das ist ja keine gute Nachricht. Bis jetzt dachte ich, dass das machbar 
ist.

Das Bild hat die IP-Adresse http://192.168.178.8x/cgi/jpg/image.cgi und 
ist etwa 80 - 100 KBytes groß. Ca. 1 KByte Speicher stehen als Puffer im 
AVR zur Verfügung. D. h. es müssten so 80 bis 100 Portionen abgerufen 
und gespeichert werden. Die Übertragung vom NETIO zum PC ist - mit 
geschätzten 30 KBytes/s - relativ flott

Gibt es Literatur zum Thema, wo ich mich einlesen kann?

von Stefan F. (Gast)


Lesenswert?

Du musst halt einen HTTP Client programmieren. Wenn der gut sein soll, 
wird es mit dem Speicher aber knapp.

Ich würde nicht einen HTTP Client programmieren, der ganz speziell auf 
diese eine Webcam ausgelegt ist. Denn irgendwann wird die Kamera durch 
eine andere ersetzt und dann fängst du wieder von vorne an.

von Walter (Gast)


Lesenswert?

HTTP-Client war das Stichwort!

Im Radig-Softwarepaket ist ein entsprechende Modul. Damit komme ich erst 
einmal weiter. Vielen Dank.

von Michael U. (amiga)


Lesenswert?

Hallo,

welchen AVR hast Du auf dem NetIO? Den Mega644?
Ich habtte  ein paar Jahre den U.Radig-Webserver hier laufen mit einem 
RF12 433MHz Modul darn. Sammelte meine Sensordaten ein und lieferte eine 
Webseite aus. Meine Kenntnis seiner Software ist also schon etliche 
Jahre alt...

Vermutlich kann man es schon machen, aber ich würde es nichr damit 
machen, obwohl ich eigentlich jeden "Unfug" probieren muß.

Mein NetIO hatte ich letztens wieder gefunden und habe einen Mega1284 
draufgesteckt und einen "Arduino" draus gemacht. Einfach nur, weil die 
da verfügbaren Bibliotheken eine Weiternutzung mit recht wenig Aufwand 
durchaus für mich sinnvoll ist.

Natürlich kannst Du Dein Glück auch mit U.Radigs Software probieren, man 
wird ja nicht dümmer dabei.

Mit GET Deine obige URL anfordern und schauen, was als Request von der 
Kamera zurückkommt. Das mußt dann eben im Ram zwischenspeichern und 
blockweise auf die SD-Card schreiben.
Das der ENC28J60 ja ziemlich unintelligent ist, läuft alles sowieso 
blockierend ab. Man muß den Buffer des ENC da möglichst gut mitnutzen.
U. Radig hatte ja mal die DC-3840 Handy-Cam am Wenserver. Die fiel mir 
letztens in die Hände und vielleicht hänge ich die mal an einen ESP8266, 
nur so zum Spaß.

Da holt U. Radig das Bild der Kamera, die sendet mit 921kBit das 
komplette Bild ohne Pause. Notgedrungen speichert er jeweils 128 Byte 
vom Bild und schickt es per Webserver raus. Dann fordert er das Bild 
wieder an und bearbeitet die nächsten 128 Byte bis er alles 
rausgeschickt hat.
Bei TCP kann man sich die Pausen zum Verarbeiten mit den 
Paket-Quittungen beschaffen. Machen kann man vieles...

Ich habe an das NetIO die Relaiskarte angesteckt (lag auch noch rum) und 
mal mit UIPEthernet und PubSubClient (Arduino-Libs) einen MQTT-Client 
raufgepackt und die Relais geschaltet.
Belegt rund 22k Flash und gut 1k Ram.
Beim Mega1284 sind das 16% Flash und 6% Ram. Da kann man sich dann 
durchaus noch austoben.

Gruß aus Berlin
Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.