Webcam_Face_2_fhem => Windows Utility (Vorstellung) => BETA

Begonnen von Rince, 21 Juni 2015, 13:00:59

Vorheriges Thema - Nächstes Thema

Rince

Edit 3:
Noch ein Update auf Version 0.6 => Bilder speichern ist auch eingebaut
- Ganzen gemachtes Bild
- nur das erkannte Gesicht
(es geht auch beides gleichzeitig)
Bitte readme beachten

Edit 2:
Update, nachlesen unter:
https://forum.fhem.de/index.php/topic,38347.msg608426.html#msg608426

Edit 1:
Im Anhang ist der Quellcode.
Ich bin mir nicht mehr sicher, ob die restlichen Dateien auch da liegen mussten, oder ob ich sie nur für den Compiler gebraucht hatte.
Kommt davon, wenn man Jahre nix macht :)

In der readme.txt steht auch drin, wie ich das Ding zu einer EXE kompiliert habe.

Wer das Programm versucht auszuführen, sollte bedenken, das der Pfad zu der conf.json angegeben werden muss.
Also für Tests evtl. schnell fest verdrahten den Pfad.


Hi,

der kleine Zauberlehrling (also ich) hat sich mal an Python und Windows versucht:

Hier die Vorstellung eines kleinen Windows Programms.
Es sucht im Videostream einer am PC angeschlossenen Webcam Gesichter.
Wenn es eines gefunden hat, wird fhem per http darüber informiert.


Suche sowohl Betatester, als auch jemand, der sich mit Python auskennt :)
(Allerdings denke ich, dass es echt problemlos einfach funktioniert)


Die Konfiguration ist recht einfach. Im wesentlichen das beiliegende conf.json-File an die eigenen Bedürfnisse anpassen (insbesondere IP Adresse für fhem und den gewünschten Befehl, Windows Editor reicht dafür)

Aufruf mit:
Webcam_Face_2_fhem.exe --conf  "<Pfad_wo_die_conf.json_liegt>.conf.json"

Das ist eigentlich alles :)

Download:
https://www.dropbox.com/sh/nvkoiglqtwxeh11/AAAp1szOx78gXRdfXMnlbjvQa?dl=0


Getestet mit:
Windows 7, Logitech Webcam...



Fragen, Anregung, Mitarbeit etc. gerne hier...

Quellcode auf Anfrage (Vorsicht, man muss einiges installieren wen man es selber compilieren will)



Known Bugs:
Leider überlebt das Tool einen Standby nicht. Man muss es anschließend wieder starten (lassen).


Wenn es klappt, viel Spaß :)

Rince
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#1
Hier ist übrigens schön beschrieben, wie man das Programm nach einem Standby automatisch wieder reaktiviert bekommt :)

http://rootpanik.de/blog/rootpanik/20100712/programme-nach-dem-ruhezustandstandby-mit-windows-7-starten


Klappt :)




Nachtrag:
http://www.fhemwiki.de/wiki/SleepOnLan
Hier ist auch beschrieben, wie man einen Windows Rechner von fhem aus in den Ruhezustand schicken kann


Damit steht dem Energiesparen nix mehr im Weg.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#2
Anwendungsbeispiel:

Wenn 30 Minuten niemand mehr am PC war, soll fhem den PC in den Ruhezustand schicken


define di_Andi_PC_aus DOIF ([[az_Andi_vor_PC:?true]) (set az_PC_Andi off)
attr di_Andi_PC_aus do resetwait
attr di_Andi_PC_aus wait 1800


Erläuterung:
az_PC_Andi ist ein WOL Device
Als shutdownCmd ist
"wget http://192.168.5.21:7760/suspend"
definiert. (Siehe obigen Wiki Link, SleepOnLan)


Das "attr di_Andi_PC_aus do resetwait" läßt den Timer immer wieder zurück stellen (also von vorne beginnen), sobald ein Gesicht vor dem PC aufgetaucht ist.
Taucht keines mehr auf, läuft der Timer 1800 Sekunden lang weiter, um dann den Rechner in den Standby zu schicken...

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

Update

Im Dropbox Ordner gibt es Version 0.2

Neu:
Auf Wunsch wird direkt beim Start an fhem der entsprechende Befehl gesendet, bevor ein Gesicht erkannt wurde

Damit triggert das DOIF auch dann, wenn der PC nachts angehen sollte und daher gar kein Gesicht da ist, weil der Besitzer schläft...


Weiterhin:
Die conf.json ist vorbereitet um auch Bilder zu speichern, allerdings ist noch kein Programmcode dazu da...
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

mago0211

Hallo,

finde die Idee echt Klasse. Leider hab ich zurzeit keine Zeit dich zu Unterstützen.
Aber mal rein aus Interesse. Kannst du derzeit nur erkennen ob irgendein Gesicht da ist oder kannst du auch erkennen welches Gesicht vor dem PC sitzt?

Gruß
Markus

Rince

Hi,

im Moment mache ich nur Gesichtserkennung, nicht Identifizierung.
Aber ab 0.3 will ich die Bildspeicherung laufen haben. Das könnte dann die Grundlage für eine Identifizierung sein.

Wenn man das robust machen will, dürfen es ruhig 50-100 Bilder / Person sein :)

Ich plane auch ein Tool bereit zu stellen, welches dann die Bilder entsprechend auswertet. Kommt noch.



Übrigens sollte es wirklich recht einfach funktionieren. Webcam (8€ bei Pollin), conf.json anpassen (ist echt easy), und los gehts...
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

Habe es jetzt mal auf Windows 8.1 getestet, quasi jungfräulich...

Offenbar werden die Bibliotheken nicht in die EXE eingebunden.
Habe jetzt das komplette Paket in ein ZIP FIle gepackt. Selbiges runterladen, entpacken, die darin enthaltene conf.json anpassen, und es läuft...
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

Das Tool läuft jetzt bei mir seit fast 2 Jahren.

Reichlich Zeit um Erfahrungen zu sammeln:
Erkennung (quasi die Kernkompetenz des Tools) läuft super.

Was mir nicht gefällt:
Der Delay macht ein Schließen des Tools zwar nicht unmöglich, aber es dauert eben. Das muss ich ändern.
Die Robustheit gegen Standby ist unbefriedigend. Zu 95% funktioniert es. Das ist zu wenig.
Der Aufruf über die URL zum Update des Dummies ist auch blöd. Ich denke ich schreibe es um auf MQTT.
Oh, es blockiert die Kamera. Wenn man skypen will, muss man es abschießen. Auch nicht hübsch.
Muss es wohl so umstricken, dass es die Kamera immer neu initialisiert, und für den Fall, dass es nicht geht (Skype...) den Fehler anfangen.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#8
Update:

Es heißt jetzt Webcam_Face_2_MQTT :)
Und es verbindet sich mit einem MQTT-Broker.

Die Idee:
Wenn am PC ein Gesicht erkannt wird, wird auf einem Topic ein frei definierbarer Wert gesendet.
Dieses Topic kann man mit FHEM abonnieren, um z.B. bei einer längeren Abwesenheit den Computer in den StandBy zu schicken


Die Konfiguration ist eigentlich wie früher auch:



{
"show_video": true,
"face": "haarcascade_frontalface_default.xml",
"use_cam": 0,
"scale": 1.2,
"size": [30, 30],
"width": 300,
"time_delay": 30,
"piep": false,
"config_mqtt_host": "192.168.5.2",
"config_mqtt_publish_topic": "zuHause/EG/Buero/Andi",
"config_mqtt_content": "true",
"send_face_at_start": true,
"write_picture_to_disk": false,
"write_face_to_disk": false,
"path_to_picture": "not supportet",
"path_to_face": "not yet supportet",
"image_type": "png"
}


Was bis jetzt konfigurierbar ist für MQTT:
Die IP Adresse vom Broker
Das Topic auf dem gepublished werden soll
Die Payload, die gepublished werden soll

Was man noch einbauen könnte:
Username / Password
Port (MQTT kennt verschiedene Ports, z.B. auch einen für TLS; da ich das aber nicht programmieren kann, erscheint es mir nicht so wichtig zu sein)

Code gibt es später, ich möchte noch dieses Blocking loswerden

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

Nächstes Update:
Das Speichern von Bildern ist auch implementiert.

Beachten:
Es sind bei den Bildern absolute Pfadangaben zu verwenden
Die Windows eigenen \ durch / ersetzen : D:\face => D:/face

Der Rest ist eigentlich eher selbsterklärend.

In der beiliegenden conf.json sollte der time-delay angepasst werden (5-10 ist völlig okay, 30 tun es auch)
Die Bilder-Speicher Funktionen sollten mit Bedacht gesetzt werden. Es kommt da schnell eine Menge an Bildern zusammen
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)