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 (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 (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
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.
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...
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...
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
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...
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...
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.
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
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