Hallo Zusammen,
anbei mein FOSCAM Modul, leider ohne Hilfe, da ich hierzu noch keine Zeit hatte.
Das Modul kann:
- Snapshoot erstellen / Snapshoot anzeigen ist derzeit remarkt
- Bewegungsalarm Alarm Aktivieren/deaktivieren
- Positionen via Kommand anfahren
- Aktuellen Snapshoot bei Bildaufruf im Overview anzeigen
hier ein Beispiel meiner FHEM.cfg
#
# IP CAM in the living room
#
define IPCAM1 FOSCAM <IP of Camera> 10
attr IPCAM1 alias Kamera im Wohnzimmer
attr IPCAM1 credentials /opt/fhem/foscam.conf
attr IPCAM1 event-on-change-reading motionDetectAlarm
attr IPCAM1 group Kamera-Wohnzimmer IPCAM1
attr IPCAM1 height 150
attr IPCAM1 model FI9821WV2
attr IPCAM1 poweronposition AlarmPos
attr IPCAM1 reconnecttime 60
attr IPCAM1 room Kamera-Wohnz.
attr IPCAM1 snapshots 5
attr IPCAM1 storage /opt/fhem/www/snapshots
attr IPCAM1 timestamp 1
attr IPCAM1 webstorage ./fhem/www/snapshots
attr IPCAM1 width 256
attr IPCAM1 height 144
# Position functions
define IPCAM1Pos dummy
attr IPCAM1Pos alias Setze Kameraposition der Wohnzimmer-Kamera
attr IPCAM1Pos group Kamera-Wohnzimmer IPCAM1
attr IPCAM1Pos room Kamera-Wohnz.
attr IPCAM1Pos setList state:AlarmPos,StandbyPos,Fenster,Mitteschreibtisch
attr IPCAM1Pos webCmd state
define evt_IPCAM1Pos notify IPCAM1Pos.* { evtSetCameraPosition($NAME,$EVENT);; }
attr evt_IPCAM1Pos alias Event für Aktion Kamera Kommando
attr evt_IPCAM1Pos room events
# Snap shoot functions
define IPCAM1SnapShot dummy
attr IPCAM1SnapShot alias Löse Snapshoot der Wohnzimmer-Kamera aus
attr IPCAM1SnapShot group Kamera-Wohnzimmer IPCAM1
attr IPCAM1SnapShot room Kamera-Wohnz.
attr IPCAM1SnapShot setList state:-,getSnapShotPicture
attr IPCAM1SnapShot webCmd state
define evt_IPCAM1SnapShot notify IPCAM1SnapShot.* { evtSetCameraCommands("IPCAM1",$EVENT);; }
attr evt_IPCAM1SnapShot room events
#
# Motion Control of all cameras
#
define evtIPCAMMotion notify IPCAM1:motionDetectAlarm.* { evtCameraMotionAlarm($NAME,$EVENT);; }
attr evtIPCAMMotion alias Event für Aktion bei Motion
attr evtIPCAMMotion room events
Hier der Code meiner my_Utilits
#
# Set the position of the Camera
#
sub evtSetCameraPosition($$)
{
my $CameraName = shift;
my $PositionName = shift;
my $CameraTag = substr($CameraName,0,length($CameraName)-3);
if ( $PositionName ne '-' )
{
fhem("set $CameraTag goPosition $PositionName"); # Set command for position
fhem("set $CameraName -"); # Clear Command Tag
}
return ;
}
#
# Evtl for the Cameras
#
sub evtSetCameraCommands($$)
{
my $CameraName = shift;
my $Commando = shift;
# Log 1, "evtSetCameraCommands: set $CameraName $Commando executed" ;
if( $Commando ne '' or $Commando ne '-')
{
fhem("set $CameraName $Commando");
fhem("set $CameraName"."SnapShot -");
}
}
Habe es mit einer FOSCAM R2, FI9831PV2, FI9821PV2 getestet.
Ich wollte eigentlich noch den aktuellen Videostream im Overview anzeigen
(Dieser Strean läuft direkt zwischen Browser und Kamera laufen). Nur hier habe ich noch "permission" Problem.
Viele Grüße
R.
Hallo,
erstmal danke für das Modul.
Ich möchte das an meinen Foscams (C1 + C2 + FI9803) einsetzen, um bei Abwesenheit den Bewegungsalarm zu aktivieren.
Die Kameras sind eingebunden, jedoch ohne Snapshot und Position.
Ich sehe zumindest den Status ob sie online oder offline sind.
Jedoch kann ich den Motion-Status zwar abfragen jedoch ohne Rückmeldung.
Was mache ich hier falsch, bzw. brauchst Du von mir irgendwas um diese Kameratypen einzubinden ?
Und ein Wunsch: Es wäre gut, wenn man die Eingaben zu den Attributen User+PW nicht im Klartext hinterlegen könnte
LG
Hallo Bartimaus,
Motion Detection habe ich nur an meinen Kameras geprüft.
#
# Motion Control of all cameras
#
define evtIPCAMMotion notify IPCAM1:motionDetectAlarm.*{ evtCameraMotionAlarm($NAME,$EVENT);; }
attr evtIPCAMMotion alias Event für Aktion bei Motion
attr evtIPCAMMotion room events
In dieser Routine kann man dann entsprechend die Verarbeitung starten.
$State = $Event;
$State =~ s/motionDetectAlarm:/ /; # Remove event reading name
$State =MyTrim($State); # Remove spaces
if ( $State eq '2' )
{
Alarm !!!!
}
Wenn Du das Kommando "ActiveMotionConfig" sendest, wird die Konfiguration
für Motion-Aktive zur Kamera gesendet.
"DeActiveMotionConfig" schaltet es wieder ab.
Gib mal das Kommando "getMotionConfig" an, wenn dann die Kamera in den Feldern
neue Eigenschaften anzeugt, könnte es sein, das es mit einer C1 läuft.
Diese sind notwendig, damit das ganze läuft.
Hier ein Ausschnitt der Routine, welche das macht.
when("ActiveMotionConfig")
{
$CommandURL="setMotionDetectConfig&isEnable=1".
"&linkage=$hash->{READINGS}{linkage}{VAL}".
"&snapInterval=$hash->{READINGS}{snapInterval}{VAL}".
"&sensitivity=$hash->{READINGS}{sensitivity}{VAL}".
"&triggerInterval=$hash->{READINGS}{triggerInterval}{VAL}".
"&schedule0=$hash->{READINGS}{schedule0}{VAL}".
"&schedule1=$hash->{READINGS}{schedule1}{VAL}".
"&schedule2=$hash->{READINGS}{schedule2}{VAL}".
"&schedule3=$hash->{READINGS}{schedule3}{VAL}".
"&schedule4=$hash->{READINGS}{schedule4}{VAL}".
"&schedule5=$hash->{READINGS}{schedule5}{VAL}".
"&schedule6=$hash->{READINGS}{schedule6}{VAL}".
"&area0=$hash->{READINGS}{area0}{VAL}".
"&area1=$hash->{READINGS}{area1}{VAL}".
"&area2=$hash->{READINGS}{area2}{VAL}".
"&area3=$hash->{READINGS}{area3}{VAL}".
"&area4=$hash->{READINGS}{area4}{VAL}".
"&area5=$hash->{READINGS}{area5}{VAL}".
"&area6=$hash->{READINGS}{area6}{VAL}".
"&area7=$hash->{READINGS}{area7}{VAL}".
"&area8=$hash->{READINGS}{area8}{VAL}".
"&area9=$hash->{READINGS}{area9}{VAL}";
}
when("DeActiveMotionConfig")
{
$CommandURL="setMotionDetectConfig&isEnable=0".
"&linkage=$hash->{READINGS}{linkage}{VAL}".
"&snapInterval=$hash->{READINGS}{snapInterval}{VAL}".
"&sensitivity=$hash->{READINGS}{sensitivity}{VAL}".
"&triggerInterval=$hash->{READINGS}{triggerInterval}{VAL}".
"&schedule0=$hash->{READINGS}{schedule0}{VAL}".
"&schedule1=$hash->{READINGS}{schedule1}{VAL}".
"&schedule2=$hash->{READINGS}{schedule2}{VAL}".
"&schedule3=$hash->{READINGS}{schedule3}{VAL}".
"&schedule4=$hash->{READINGS}{schedule4}{VAL}".
"&schedule5=$hash->{READINGS}{schedule5}{VAL}".
"&schedule6=$hash->{READINGS}{schedule6}{VAL}".
"&area0=$hash->{READINGS}{area0}{VAL}".
"&area1=$hash->{READINGS}{area1}{VAL}".
"&area2=$hash->{READINGS}{area2}{VAL}".
"&area3=$hash->{READINGS}{area3}{VAL}".
"&area4=$hash->{READINGS}{area4}{VAL}".
"&area5=$hash->{READINGS}{area5}{VAL}".
"&area6=$hash->{READINGS}{area6}{VAL}".
"&area7=$hash->{READINGS}{area7}{VAL}".
"&area8=$hash->{READINGS}{area8}{VAL}".
"&area9=$hash->{READINGS}{area9}{VAL}";
}
Ansonsten, feel free to modify.
Viele Grüße
R.