Xiaomi Dafang - Einzelreadings aus MQTT-Device

Begonnen von loungelizard, 04 März 2018, 08:50:19

Vorheriges Thema - Nächstes Thema

blueberry63

Ich glaube, es fehlt nur:


attr Xiaomi_Dafang pathCmd cgi-bin/action.cgi?


Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

KalleBlomquist

Hallo,

ich greife den Thread nochmal auf und habe eine Frage:

- wie greift ihr die Bewegungserkennung der Kamera in Fhem ab ?

Ich habe die alternative FW drauf und die Cam via dem Modul IPCAM in Fhem eingebunden.
Snapshots etc. funktioniert auch alles.
Ich würde nun auch gerne ein Event vom Bewegungsmelder bekommen, aber wie ?

Gruß Kalle

inesa394

Ich habs so gelöst in Dafang Mqtt aktivieren
Einträge in motion.conf editieren zu
publish_mqtt_message=true
publish_mqtt_snapshot=true
in Fhem ein MQTT Device anlegen
defmod mqtt_device_dafangwz MQTT_DEVICE
attr mqtt_device_dafangwz userattr upTime { findValueInReading ("cam_dafang_status", "Status", "Uptime")}, RTSP-Server { findValueInReading ("cam_dafang_status", "Status", "RTSP-Server")}, IR-Cut { findValueInReading ("cam_dafang_status", "Status", "IR-Cut")}, SSID { findValueInReading ("cam_dafang_status", "Status", "SSID")}, Bitrate { findValueInReading ("cam_dafang_status", "Status", "Bitrate")}, SignalLevel { findValueInReading ("cam_dafang_status", "Status", "SignalLevel")}, Linkquality { findValueInReading ("cam_dafang_status", "Status", "Linkquality")}, NoiseLevel { findValueInReading ("cam_dafang_status", "Status", "NoiseLevel")}, LED_Blue { findValueInReading ("cam_dafang_status", "Status", "Blue")}, LED_Yellow { findValueInReading ("cam_dafang_status", "Status", "Yellow")}, LED_IR { findValueInReading ("cam_dafang_status", "Status", "Infrared")}
attr mqtt_device_dafangwz DbLogExclude .*
attr mqtt_device_dafangwz IODev Mqtt
attr mqtt_device_dafangwz autoSubscribeReadings 1
attr mqtt_device_dafangwz icon mqtt
attr mqtt_device_dafangwz room Mqtt
attr mqtt_device_dafangwz stateFormat transmission-state
attr mqtt_device_dafangwz subscribeReading_Status DafangWz/dafang
attr mqtt_device_dafangwz subscribeReading_auto DafangWz/dafang/night_mode/auto
attr mqtt_device_dafangwz subscribeReading_brightness DafangWz/dafang/brightness
attr mqtt_device_dafangwz subscribeReading_detection DafangWz/dafang/motion/detection
attr mqtt_device_dafangwz subscribeReading_h264 DafangWz/dafang/rtsp_h264_server
attr mqtt_device_dafangwz subscribeReading_horizontal DafangWz/dafang/motors/horizontal
attr mqtt_device_dafangwz subscribeReading_ir DafangWz/dafang/leds/ir
attr mqtt_device_dafangwz subscribeReading_motion DafangWz/dafang/motion
attr mqtt_device_dafangwz subscribeReading_night_mode DafangWz/dafang/night_mode
attr mqtt_device_dafangwz subscribeReading_vertical DafangWz/dafang/motors/vertical


Auf reading motion ein Doif tiggern lassen
([08:00-23:00] and ["mqtt_device_dafangwz:motion"] eq "ON") (set telegram msg Bewegung unter im Wohnzimmer Bild kommt gleich $DEVICE {(localtime)}) (get Xiaomi_Dafang image ) (set telegram sendImage /home/telegram/Xiaomi_Dafang_snapshot.jpg)
ipcam device in fem muss natürlich auch angelegt werden zum holen der Snapshots

cu



KalleBlomquist

Hast Du die u.a. Einträge in die .conf Datei eingefügt, oder nur geändert ?
Bei mir gibt´s die Einträge nämlich garnicht.

publish_mqtt_message=true
publish_mqtt_snapshot=true


KalleBlomquist

OK, gefunden ...
Die Werte stehen nicht in der MQTT.conf sondern in der Motion.conf  8)

steffen83

#20
Hallo in die Runde,

Warum kann ich die Kamera nicht steuern!? Über Pan, TILT etc. geht es nicht.
Nebenfrage: Wenn die Kamera das WLAN verliert? Wählt sie sich bei euch neu ein?
Und könnt ihr über MQTT die Kamera steuern? IR an etc.?
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

loungelizard

Hallo Steffen,
ja geht alles. Verschicke die Befehle zum Steuern allerdings nicht als MQTT, da sehe ich irgendwie keinen Mehrwert drin. Hast Du Sie gemäß Anleitung konfiguriert? Funktionieren die Befehle über die eigene Webseite der Kamera?
WLAN-Connectivity habe ich keine Probleme. Ich monitore das nicht aktiv, hatte aber nach mehreren Monaten nie das Problem, dass die Kamera nicht mehr erreichbar war.

Cheers, Florian
Raspberry Pi 3: CUL V3 (433 MHz a-culfw 1.21.00), Intertechno V1/V2; Z-Wave: ZME_UZB1, Fibaro Switches, Devolo Sensors, Aeotec Sensor; Xiaomi Mi; Lightify; MAXLAN: Heizkörper, Wandthermostat; Sonstiges: Fritzbox, Unfi, LG-TV, DENON AVR; TabletUI

blueberry63

Ich habe auch noch eine Frage zu diesem Thema:
Hat es schon jemand geschafft, bestimmte Positionen zuverlässig anzusteuern?

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

steffen83

#23
Auch wenn das hier nicht so ganz hinpasst, bastelt ihr hier in irgendeine weise weiter?

Ich nämlich ja (und kann ich euch auch bald zur Verfügung stellen)
- Bei mir funktioniert das Recording nicht. Dies versuche ich noch umzuändern. Bis jetzt komme ich mit dem Ton nicht weiter. Bild geht.
- Ich habe Telegram nun auch in die Benutzeroberfläche eingearbeitet. Damit ich rechts über das Menü "Motion - Send Telegram"
- Ich habe herausgefunden, warum oder wie es geht, dass die Kamera nach Motion wieder an die Position X fährt. Dies versuche ich ebenfalls im Menü einzubinden. (was allerdings mehr als schwierig ist)
-> Ihr könnt in der Datei "/system/sdcard/scripts/detectionTracking.sh" ab Spalte 41 die zwei Werte nach else "origin_x_axis=0 und origin_y_axis=0" entsprechend verändern.
- Aktuell ist noch in der Testphase, dass die Kamera automatisch sich kalibriert, wenn sie gestartet wird.

Habt ihr auch noch Dinge die ich evtl. umsetzen kann?

Mein Plan ist es, die Kamera mit in die Alarmanlage einzubinden.
- Wenn Alarmanlage aus -> Kamera fährt in eine Position, wo sie gegen die Wand schaut. Ebenfalls ist "Motion - Send Telegram" dann deaktiviert.
- Wenn Alarmanlage an -> Kamera fährt in die vorgegebene Position und reagiert wieder auf Motion etc.
- Zudem wollte ich das Telegram Menü noch etwas aufblasen um die Kamera auch darüber zu steuern.

Was ich leider noch nicht hinbekommen habe ist ein Netzwerklaufwerk zu Mounten (mit PW Schutz). Damit ich die gespeicherten Bilder direkt auf einem NAS oder FTP etc. habe. Somit könnte der Einbrecher die Kamera mitnehmen :-) Und ich habe noch Bilder von ihm.

Gruß
Steffen
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

Dersch

Der Code ist Gold wert für mich!

Ich habe auch das Problem aber ein leicht anderes Reading:


{"Time":"2018-12-31T21:29:53","ENERGY":{"TotalStartTime":"2018-12-31T16:16:59","Total":0.013,"Yesterday":0.000,"Today":0.013,"Period":0,"Power":22,"ApparentPower":30,"ReactivePower":21,"Factor":0.73,"Voltage":237,"Current":0.127}}


Nun habe ich mir deinen Code in der 99_myUtils.pm etwas abgeändert:

sub findValueInReading($$$) {


my $DeviceToRead=shift;
my $ReadingToRead=shift;
my $ValueToSearch=shift;
my $totalValue=ReadingsVal($DeviceToRead,$ReadingToRead,0);

#Log 1, "UTIL:findValueInReading: Device: ".$DeviceToRead." - Reading:".$ReadingToRead. " - Value:".$ValueToSearch. " - Reading:".$totalValue;


# Werte kommen im String wie folgt: "Wert":"tatsächlicher Wert"
# Gedanke: Suche die erste Position des Vorkommens "Wert"
# Dann beginnt der Substring an der Position +3 und endet am nächsten Vorkommen von '"'

my $pos1=index($totalValue,$ValueToSearch);
if ($pos1 != -1) {



my $finalPos=$pos1+length($ValueToSearch)+2;
# die 3 kommt von '":"

my $newValue=substr($totalValue,$finalPos);

#nächstes '"' suchen

my $endOfString=index($newValue,',"');

my $finalValue=substr($newValue,0,$endOfString);
#Log 1, "UTIL:findValueInReading: pos1: ".$pos1." - finalPos:".$finalPos. " - newValue:".$newValue. " - endOfString:".$endOfString;

return $finalValue;

}
return "not found";


}


Das klappt auch soweit ausser 2 für mich unlösbare Probleme (mangels Programmierfähigkeiten)

1. Wenn ich ein reading Total machen möchte mit "Total":0.013 nimmt er mir aus dem Gesamtreading "TotalStartTime":"2018-12-31T16:16:59"
2. Wenn ich ein reading Current machen möchte ist ein } am Ende im userreading.

Kannst du mir evtl helfen deinen Code so zu ändern, dass ich beide Effekte nicht habe?

Grüße und guten Rutsch! :)
Dirk

steffen83

ich habe es nicht ganz verstanden was du möchtest. Möchtest du die uptime haben?

Dann ändere doch hier etwas:
mqtt-status-interval.sh


uptime=$(/system/sdcard/bin/busybox uptime)
  /system/sdcard/bin/mosquitto_pub.bin -h "$HOST" -p "$PORT" -u "$USER" -P "$PASS" -t "${TOPIC}"/uptime ${MOSQUITTOPUBOPTS} ${MOSQUITTOOPTS} -r -m "$uptime"

Sollte der einfachste Weg sein :-)

und in FHEM:
attr Dafang_Kamera subscribeReading_uptime myhome/dafang-terrasse/uptime
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

Dersch

#26
Hi, danke für die Antwort. Ich möchte Total aus dem Gesamtstatus haben. Aber er nimmt mir TotalStartTime.

BTW: Es geht mir nicht um die Dafang, die habe ich gar nicht. Es geht mir um deinen Code um einen MQTT Gesamtstatus in einzelne Readings zu packen.
Das klaptt soweit auch nur halt mit dem TOTAL Status nicht.

vinc2

Hallo, ich kann zwar nicht zum Thread direkt beitragen, jedoch habe ich ein Problem mit meiner Dafang und Telegram.
Die Dafang ist gehackt und ein Telegrambot erstellt. Leider muss man wohl etwas mehr Wissen haben, um das ganze zu aktivieren.
Kann einer eine kleine Anleitung schreiben bzw. mir die Konfigurationsdateien zum Vergleich bereitstellen?

Noch eine Frage, ist es möglich die IR Led zum Stromsparen abzuschalten oder müssen die IR Leds dauerhaft zur Bewegungserkennung aktiv sein?

steffen83

Hast du die neuste Version drauf?
Weil die kenne ich noch nicht ganz.
Aber schau Mal unter Service ob der Telegram Service startet. Wenn ja schau auch Mal rechts oben im Menü ob du dort Telegram aktivieren kannst.
In der config Datei musst du nur den API Code von deinem Bot eintragen und die Adresse (Zahl) von deinem Account damit du die Nachrichten bekommst.
Ja du kannst alle LEDs abschalten.... Ob sie so viel Strom sparen weiß ich nicht. Betreibst du die über Batterie? Ich habe in meine schon ein D1 Mini eingebaut mit dht22 da die Kamera auf der Terrasse steht (überdacht) um zu schauen ob es Probleme wegen der Feuchtigkeit oder Temperatur gibt. Aber da ist es immer zwischen 30-40% Luftfeuchtigkeit und ca 30 Grad in der Kamera das ist top.
Gruß Steffen

Gesendet von meinem MI 8 mit Tapatalk

Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

vinc2


Ich habe die neuste Version ja.

._telegram-bot  geht man auf Start passiert nix

telegram-bot   läuft hat eine PID


Im Menü rechts kann kein Telegramm aktiviert werden

Andere Meldungen:


mqtt-status: you have to configure mqtt first

mqtt-control: you have to configure mqtt first


Probleme aus den logfiles:



cat: can't open '/run/timelapse.pid': No such file or directory



2019-01-10 03:34:31.333 ( 218.088s) [ivsMoveDetection]         ImpEncoder.cpp:405      0| Will execute command /system/sdcard/scripts/detectionOn.sh
/system/sdcard/scripts/detectionOn.sh: .: line 30: can't open '/system/sdcard/config/mqtt.conf': No such file or directory



77 (   0.033s) [main thread     ]         ImpEncoder.cpp:690      0| Can't load 'v4l2rstpserver.ini'




E/NCU     (  250): open /etc/sensor/jxf22_nd.bin failed: No such file or directory


Ich plane die Dafang mit Netzteil zu betreiben. Ein andere User meinte, Dauerbetrieb wäre für diese Kameras nicht zu empfehlen.