Hallo,
ich brauche ein userreding, allerdings steh ich mir dazu voll auf dem schlauch wie ich das umsetzen kann.
Ich brauche ein reading welches mir in meinem Device "Kameras" ein reading mit true oder false befüllt wenn sich der Wert des vorhanden readings "alertID" ändert
Wie kann ich das umsetzen?
Danke
Attribut oldreadings auf alertID setzen.
Userreadings dann in etwa so:
userreadings Kameras truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}
Also nicht wirklich getestet, mehr als Idee zum besser machen ;)
Gruß, Joachim
Hi,
Idee :
attr Kameras userReadings change:alertID.* {"true"}
false müsstest Du dann selbst setzen, ich nehme an Du wolltest nicht toggeln.
@Joachim: Die Idee hatte ich auch. Aber wenn sich alertID ändert - dann muss doch OldReadingsVal anders sein?
Gruß Otto
Zitat von: Otto123 am 28 April 2019, 21:28:53
@Joachim: Die Idee hatte ich auch. Aber wenn sich alertID ändert - dann muss doch OldReadingsVal anders sein?
Verstehe nicht genau was du meinst!?
Attr Kameras oldreadings alertID
Wen sich die ändert, dann sollte doch per OldreadingsVal der alte Wert stehen oder?
Irgendwo habe ich genau eine Anwendung von oldreadings...
...müsste mal nachsehen wo wie und so...
Gruß, Joachim
Ja so meine ich das. Also braucht man doch bloß auf alertID zu triggern? Es sein denn die wird auch mit gleichen Werten überschrieben... Das könnte man mit event-on-change-reading abfangen.
Ich könnte noch dies beisteuern:
attr Kameras userReadings toggle { if(ReadingsVal($name,"alertID","false") eq "true") {"false"} else {"true"} }
So ähnlich erzeuge ich einen heartbeat mit AT:
defmod heartbeat at +*00:01:00 {qx(touch /opt/fhem.heartbeat)}
attr heartbeat DbLogExclude state
attr heartbeat comment Touch einer Datei für die Verwendung durch Watchdog an. \
Das Reading "touch" wird bei jedem Zyklus alternierend auf 0 bzw. 1 gesetzt zum Logging und Darstellung in SVG.
attr heartbeat disable 0
attr heartbeat icon clock
attr heartbeat room Dienste->Monitoring
attr heartbeat userReadings touch { if(ReadingsVal($name,"touch",0) == 0) {1} else {0} }
Grüße,
Heiko
Zitat von: Otto123 am 28 April 2019, 21:51:30
Ja so meine ich das. Also braucht man doch bloß auf alertID zu triggern? Es sein denn die wird auch mit gleichen Werten überschrieben... Das könnte man mit event-on-change-reading abfangen.
Da hast du nat. recht... ;)
Aber muss sich halt Tommy82 raussuchen was ihm am besten gefällt ;)
Gruß, Joachim
Zitat von: MadMax-FHEM am 28 April 2019, 21:19:41
Attribut oldreadings auf alertID setzen.
Userreadings dann in etwa so:
userreadings Kameras truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}
Also nicht wirklich getestet, mehr als Idee zum besser machen ;)
Gruß, Joachim
Hi,
also wenn ich das jetzt mal versuchen würde, in welchem reading würden dann jetzt die werte true und false stehen, damit ich sie auswerten kann?
Es muss vermutlich (hab aber nach der Zeit nimmer so genau im Kopf) so heißen:
attr Kameras userreadings truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}
Das Reading mit true oder false heißt dann truefalse... ;)
Nachzulesen bei userreadings in der commandref ;)
Aber wie Otto schon geschrieben hat reicht wohl mittels event-on-change-reading zu erreichen, dass alertID nur einen Event bei Änderung erzeugt und somit dann true/false...
Gruß, Joachim
Zitat von: MadMax-FHEM am 11 September 2019, 21:17:18
Es muss vermutlich (hab aber nach der Zeit nimmer so genau im Kopf) so heißen:
attr Kameras userreadings truefalse {if(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt")){return true}else{return false}}
Das Reading mit true oder false heißt dann truefalse... ;)
Nachzulesen bei userreadings in der commandref ;)
Aber wie Otto schon geschrieben hat reicht wohl mittels event-on-change-reading zu erreichen, dass alertID nur einen Event bei Änderung erzeugt und somit dann true/false...
Gruß, Joachim
Nach solanger Zeit, da hast wohl recht, die liebe Zeit.
Also damit bekomme ich zwar das reading, allerdings gefüllt mit diesem hier
Error evaluating Kameras userReading truefalse: Bareword "true" not allowed while "strict subs" in use at (eval 1953) line 1.
Bareword "false" not allowed while "strict subs" in use at (eval 1953) line 1.
Dann vielleicht:
return "true" bzw. return "false" (also als String)
Wie geschrieben: nicht getestet und nicht für copy/paste... ;)
Ich weiß ja nicht was genau du jeweils zurück haben willst...
...einfach mal bissi probieren...
Gruß, Joachim
Versuch doch mal die Form:
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0}
oder
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}
geht auch prima in der FHEM Kommandozeile zum Test :)
Zitat von: Otto123 am 11 September 2019, 21:50:10
Versuch doch mal die Form:
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0}
oder
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}
geht auch prima in der FHEM Kommandozeile zum Test :)
Hi,
leider führt auch das
attr Kameras userReadings {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0}
im Log zu einem:
2019.09.12 20:36:02.565 1: Error evaluating Kameras userReading truefalse: Bareword "true" not allowed while "strict subs" in use at (eval 122300) line 1.
Bareword "false" not allowed while "strict subs" in use at (eval 122300) line 1.
Wenn ich das in die FHEM Kommandozeile eingebe, stürzt Fhem komplett ab und startet neu.
Dann gibts im Log diese Meldung
Unmatched ( in regex; marked by <-- HERE in m/ userReadings{( <-- HERE ReadingsVal("Kameras","alertID","neu")[ :;]/ at fhem.pl line 2887.
Das hier nimmt er in der Fhem Kommandozeile ohne Probleme:
attr Kameras userReadings {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}
Jetzt kann ich aber erst Morgen früh testen ob es funktioniert wie es soll.
Danke aber schonmal bis hier hin für die Hilfe
Zitat von: Tommy82 am 12 September 2019, 20:48:58
Hi,
leider führt auch das
attr Kameras userReadings {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?1:0}
im Log zu einem:
2019.09.12 20:36:02.565 1: Error evaluating Kameras userReading truefalse: Bareword "true" not allowed while "strict subs" in use at (eval 122300) line 1.
Bareword "false" not allowed while "strict subs" in use at (eval 122300) line 1.
Tut mir ja leid das es so ein Chaos ausrichtet, aber in der Codezeile oben kommt "true" und "false" gar nicht vor?!
Bist Du sicher das die Fehlermeldung damit zu tun hat?
ZitatWenn ich das in die FHEM Kommandozeile eingebe, stürzt Fhem komplett ab und startet neu.
Dann gibts im Log diese MeldungUnmatched ( in regex; marked by <-- HERE in m/ userReadings{( <-- HERE ReadingsVal("Kameras","alertID","neu")[ :;]/ at fhem.pl line 2887.
Aber in meinem Code kommt doch der Begriff userReadings gar nicht vor?! Wie kann denn das diese Fehlermeldung erzeugen? Bist Du sicher, dass diese Meldung zu einem Code in der Kommandozeile passt?
Gruß Otto
Hi,
also das problem bestand danach, aber war kein vorwurf.
Das Attribut userReadings sieht jetzt so aus:
{(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}
Ich hab hab keine Abstürze, aber auch irgendwie kein neues Readings welches ich auswerten kann, oder ich versteh es nicht wirklich.
Ich möchte ja eigentlich nur ein reading welches bei Änderung des wertes des readings "alertID" ein true or false erhält.
Hat sich das Reading "alertID" am Device "Kameras" schon mal geändert (also seit dem Setzen des Attributs)!?
Wenn nicht, dann ist es klar...
...userreadings wird ja nur "berechnet", wenn sich auch was tut ;)
Ansonsten hast du das Attribut oldReadings (oder wie das genau heißt) gesetzt!?
Weil sonst gibt es ja zu alertID auch kein "OldReadings"... ;)
(gut wäre nicht schlimm dann würde es halt nur nicht stimmen bzw. wäre halt immer "true")
Gruß, Joachim
Zitat von: MadMax-FHEM am 15 September 2019, 20:08:42
Hat sich das Reading "alertID" am Device "Kameras" schon mal geändert (also seit dem Setzen des Attributs)!?
Wenn nicht, dann ist es klar...
...userreadings wird ja nur "berechnet", wenn sich auch was tut ;)
Ansonsten hast du das Attribut oldReadings (oder wie das genau heißt) gesetzt!?
Weil sonst gibt es ja zu alertID auch kein "OldReadings"... ;)
(gut wäre nicht schlimm dann würde es halt nur nicht stimmen bzw. wäre halt immer "true")
Gruß, Joachim
Das reading "alertID" hat sich schon merhfach seit dem anlegen aktualisiert.
Das Attribut "OldReadings" ist gesetzt mit dem Wert "alertID"
Internals:
AuthToken rhR3IGpp1iIi40IfKIHWjg
CHANGED
DEF pam82@web.de
Email pam82@web.de
FAILS 0
FUUID 5c48d22e-f33f-f412-1089-bccf6192032c3e49
NAME Kameras
NR 369
POLLING 0
SNAME Kameras
STATE Polling
TYPE BlinkCamera
URL https://rest.prde.immedia-semi.com
account 49605
alertSkipped 0
cmd cameraThumbnail par1:177500:
cmdJson
cmdResult SUCCESS
doStatus
pollResult homescreen : SUCCESS
thumbnail177500Url /media/production/account/49605/network/62699/camera/177500/clip_f96j1yGx_2019_09_15__17_42PM
thumbnail177502Url /media/production/account/49605/network/62699/camera/177502/clip_MXz4PBdX_2019_09_14__08_39AM
updateTimestamp 2019-09-15T17:12:43+00:00
HU_DO_PARAMS:
NAME
addr https://rest.prde.immedia-semi.com:443
auth 0
cmd alerts
code 200
compress 1
conn
data
displayurl <hidden>
header agent: TelegramBot/1.0
User-Agent: TelegramBot/1.0
Host: rest.prde.immedia-semi.com
TOKEN_AUTH: rhR3IGpp1iIi40IfKIHWjg
hideurl 1
host rest.prde.immedia-semi.com
httpheader HTTP/1.1 200 OK
Date: Sun, 15 Sep 2019 18:22:46 GMT
Content-Type: application/json
Connection: close
Vary: Accept-Encoding
Status: 200 OK
X-Blink-Served-By: i-0cd48baa8f0940b0f
X-Content-Type-Options: nosniff
X-Powered-By: Phusion Passenger
Server: nginx + Phusion Passenger
Content-Encoding: gzip
hu_blocking 0
hu_filecount 17824
hu_port 443
hu_portSfx
loglevel 4
method GET
par1 1
par2 HIDDEN
path /api/v1/accounts/49605/media/changed?page=1&since=2019-09-15T17:12:43Z
protocol https
redirects 0
timeout 30
url https://rest.prde.immedia-semi.com/api/v1/accounts/49605/media/changed?page=1&since=2019-09-15T17:12:43Z
args:
alerts
1
HIDDEN
2
hash:
sslargs:
Helper:
DBLOG:
alertCamera:
myDbLog:
TIME 1568561173.09181
VALUE 177502
alertCameraName:
myDbLog:
TIME 1568561173.09181
VALUE Haustuer
alertID:
myDbLog:
TIME 1568567586.54598
VALUE 400159236
alertTime:
myDbLog:
TIME 1568567586.54598
VALUE 2019-09-15T17:12:34+00:00
alertVideo:
myDbLog:
TIME 1568567586.54598
VALUE /api/v2/accounts/49605/media/clip/400159236.mp4
cmd:
myDbLog:
TIME 1568569349.4591
VALUE cameraThumbnail
eventTimestamp:
myDbLog:
TIME 1568567586.5834
VALUE 2019-09-15T17:12:34+00:00
networkCamera177500Batt:
myDbLog:
TIME 1568439762.18291
VALUE 3
networkCamera177500File:
myDbLog:
TIME 1568569362.6126
VALUE www/tablet/BlinkCamera/Kameras/thumbnail/camera/BlinkCamera_Kameras_thumbnail_camera_177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg
networkCamera177500Img:
myDbLog:
TIME 1568569362.6126
VALUE <html><a href="/fhem/BlinkCamera/Kameras/thumbnail/camera/177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg"><img src="/fhem/BlinkCamera/Kameras/thumbnail/camera/177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg" height=36 widht=64>/fhem/BlinkCamera/Kameras/thumbnail/camera/177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg</a></html>
networkCamera177500Temp:
myDbLog:
TIME 1568571465.83819
VALUE 62
networkCamera177500Thumbnail:
myDbLog:
TIME 1568569362.02073
VALUE /media/production/account/49605/network/62699/camera/177500/clip_f96j1yGx_2019_09_15__17_42PM
networkCamera177500Url:
myDbLog:
TIME 1568569390.31169
VALUE /fhem/BlinkCamera/Kameras/thumbnail/camera/177500.jpg
networkCamera177502Batt:
myDbLog:
TIME 1568451318.54711
VALUE 3
networkCamera177502File:
myDbLog:
TIME 1568450387.5954
VALUE www/tablet/BlinkCamera/Kameras/thumbnail/camera/BlinkCamera_Kameras_thumbnail_camera_177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg
networkCamera177502Img:
myDbLog:
TIME 1568450387.5954
VALUE <html><a href="/fhem/BlinkCamera/Kameras/thumbnail/camera/177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg"><img src="/fhem/BlinkCamera/Kameras/thumbnail/camera/177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg" height=36 widht=64>/fhem/BlinkCamera/Kameras/thumbnail/camera/177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg</a></html>
networkCamera177502Temp:
myDbLog:
TIME 1568569660.35988
VALUE 68
networkCamera177502Thumbnail:
myDbLog:
TIME 1568450387.30411
VALUE /media/production/account/49605/network/62699/camera/177502/clip_MXz4PBdX_2019_09_14__08_39AM
networkCamera177502Url:
myDbLog:
TIME 1568450417.31262
VALUE /fhem/BlinkCamera/Kameras/thumbnail/camera/177502.jpg
networkStatus:
myDbLog:
TIME 1568468448.64663
VALUE ok
networkSyncModule:
myDbLog:
TIME 1568468448.64663
VALUE 124732:online
video:
myDbLog:
TIME 1568567589.58994
VALUE <html><a href="/fhem/BlinkCamera/Kameras/video/400159236.mp4">Video Id:400159236
videoFilename:
myDbLog:
TIME 1568567589.58994
VALUE BlinkCamera_Kameras_video_400159236.mp4
videoID:
myDbLog:
TIME 1568567589.58994
VALUE 400159236
OLDREADINGS:
2019-09-15 19:12:35 alertID 400158712
READINGS:
2019-09-15 19:13:06 alertCamera 177502
2019-09-15 19:13:06 alertCameraName Haustuer
2019-09-15 19:13:06 alertID 400159236
2019-09-15 19:13:06 alertTime 2019-09-15T17:12:34+00:00
2019-09-15 19:13:06 alertVideo /api/v2/accounts/49605/media/clip/400159236.mp4
2019-01-13 19:55:01 cameraConfig177500 $VAR1 = [
{
'account' => 49605,
'mfg_mez_type' => 'XTE',
'enabled' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'account_id' => 49605,
'network' => 62699,
'wifi_timeout' => 30,
'wifi_strength' => -58,
'video_50_60hz' => 'freq_60hz',
'camera_seq' => 1,
'liveview_bitrate' => 0,
'illuminator_duration' => 1,
'last_wifi_alert' => undef,
'early_termination' => $VAR1->[0]{'enabled'},
'temp_max' => undef,
'temp_adjust' => 0,
'alert_repeat' => 'off',
'illuminator_intensity' => 4,
'battery_alarm_enable' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'record_audio' => $VAR1->[0]{'enabled'},
'last_battery_alert' => undef,
'video_quality_support' => [
'saver',
'standard',
'best'
],
'retry_count' => 0,
'video_quality' => 'standard',
'motion_sensitivity' => '5',
'early_termination_supported' => $VAR1->[0]{'enabled'},
'clip_rate' => 2514,
'siren_volume' => undef,
'battery_check_time' => '2019-01-13T18:51:22+00:00',
'battery_voltage_threshold' => 512,
'alert_tone_enable' => $VAR1->[0]{'enabled'},
'clip_bitrate' => 2514,
'type' => 'xt',
'last_offline_alert' => undef,
'deleted_at' => undef,
'motion_alert' => $VAR1->[0]{'enabled'},
'lfr_alert_count' => 0,
'liveview_rate' => 0,
'created_at' => '2018-12-24T19:58:41+00:00',
'a1' => $VAR1->[0]{'battery_alarm_enable'},
'record_audio_enable' => $VAR1->[0]{'enabled'},
'sync_module_id' => 124732,
'temp_alert_state' => 'in_range',
'clip_max_length' => 60,
'battery_state' => 'ok',
'mac_address' => undef,
'id' => 177500,
'battery_voltage' => 173,
'temp_alarm_enable' => $VAR1->[0]{'battery_alarm_enable'},
'status' => 'done',
'clip_warning_threshold' => 15,
'thumbnail' => '/media/production/account/49605/network/62699/camera/177500/clip_QayPTduu_2019_01_13__18_34PM',
'buzzer_on' => $VAR1->[0]{'enabled'},
'mfg_main_type' => 'XME',
'unit_number' => 1,
'motion_regions' => 33554431,
'serial' => '641082180',
'temp_min' => undef,
'mfg_mez_range' => 180901260,
'onboarded' => $VAR1->[0]{'enabled'},
'temperature' => 73,
'last_temp_alert' => undef,
'offline_alert_count' => 0,
'mfg_main_range' => 180902924,
'last_connect' => {
'camera_id' => 177500,
'light_sensor_data_valid' => $VAR1->[0]{'battery_alarm_enable'},
'socket_failure_count' => 0,
'lifetime_count' => 0,
'dhcp_failure_count' => 0,
'ip_address' => '192.168.188.68',
'total_tb_wakeups' => 56610,
'light_sensor_ch0' => 0,
'ipv' => 'ipv4',
'lfr_tb_wakeups' => 221,
'temperature' => 73,
'error_codes' => 0,
'total_108_wakeups' => 546,
'serial' => '641082180',
'lfr_108_wakeups' => 221,
'unit_number' => 1,
'pir_rejections' => 0,
'battery_alert_status' => $VAR1->[0]{'battery_alarm_enable'},
'light_sensor_ch1' => 164,
'temp_alert_status' => $VAR1->[0]{'battery_alarm_enable'},
'ac_power' => $VAR1->[0]{'battery_alarm_enable'},
'account_id' => 49605,
'dev_1' => 765167,
'wifi_strength' => -58,
'light_sensor_data_new' => $VAR1->[0]{'battery_alarm_enable'},
'mac' => 'f4:b8:5e:36:23:44',
'time_dhcp_lease' => 764021,
'battery_voltage' => 173,
'lifetime_duration' => 0,
'network_id' => 62699,
'created_at' => '2018-12-24T19:58:53+00:00',
'lfr_strength' => -30,
'sync_module_id' => 124732,
'time_wlan_connect' => 567130,
'fw_version' => '2.135',
'time_108_boot' => 54415,
'time_first_video' => 119940,
'dev_2' => 0,
'updated_at' => '2019-01-13T18:51:22+00:00',
'wifi_connect_failure_count' => 0,
'dev_3' => 641082180,
'time_dns_resolve' => 0
},
'flip_image' => $VAR1->[0]{'battery_alarm_enable'},
'max_resolution' => 'r720',
'siren_enable' => $VAR1->[0]{'battery_alarm_enable'},
'camera_key' => '4a11122de79efc7fc908a997f1b3c168',
'ip_address' => undef,
'illuminator_enable' => 2,
'liveview_enabled' => 'off',
'invert_image' => $VAR1->[0]{'battery_alarm_enable'},
'last_lfr_alert' => undef,
'updated_at' => '2019-01-13T18:51:22+00:00',
'temp_interval' => 1,
'name' => 'Kellereingang',
'fw_version' => '2.135',
'wifi_alert_count' => 0,
'lfr_strength' => -30,
'auto_test' => $VAR1->[0]{'battery_alarm_enable'},
'motion_regions_compatible' => $VAR1->[0]{'enabled'},
'battery_alert_count' => 0,
'temp_alert_count' => 0,
'battery_voltage_interval' => 0,
'alert_tone_volume' => 0,
'battery_voltage_hysteresis' => 512,
'video_length' => 45,
'alert_interval' => 15,
'network_id' => 62699,
'lfr_sync_interval' => 60,
'temp_hysteresis' => undef
}
];
2019-01-13 19:55:01 cameraConfig177502 $VAR1 = [
{
'auto_test' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'lfr_strength' => -41,
'network_id' => 62699,
'temp_hysteresis' => undef,
'lfr_sync_interval' => 60,
'alert_interval' => 30,
'battery_voltage_hysteresis' => 512,
'video_length' => 5,
'temp_alert_count' => 0,
'motion_regions_compatible' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'alert_tone_volume' => 0,
'battery_alert_count' => 0,
'battery_voltage_interval' => 0,
'name' => 'Haustr',
'temp_interval' => 1,
'updated_at' => '2019-01-13T18:46:31+00:00',
'last_lfr_alert' => undef,
'invert_image' => $VAR1->[0]{'auto_test'},
'liveview_enabled' => 'off',
'illuminator_enable' => 2,
'wifi_alert_count' => 0,
'fw_version' => '2.135',
'offline_alert_count' => 0,
'last_temp_alert' => undef,
'temperature' => 66,
'onboarded' => $VAR1->[0]{'motion_regions_compatible'},
'mfg_mez_range' => 180901264,
'temp_min' => undef,
'ip_address' => undef,
'camera_key' => 'dbed524fa1888bffcae34d8b756bcd48',
'siren_enable' => $VAR1->[0]{'auto_test'},
'max_resolution' => 'r720',
'flip_image' => $VAR1->[0]{'auto_test'},
'last_connect' => {
'serial' => '661082188',
'unit_number' => 2,
'lfr_108_wakeups' => 13,
'total_108_wakeups' => 151,
'dev_1' => 733216,
'wifi_strength' => -56,
'account_id' => 49605,
'battery_alert_status' => $VAR1->[0]{'auto_test'},
'ac_power' => $VAR1->[0]{'auto_test'},
'light_sensor_ch1' => 163,
'temp_alert_status' => $VAR1->[0]{'auto_test'},
'pir_rejections' => 0,
'dhcp_failure_count' => 0,
'ip_address' => '192.168.188.71',
'total_tb_wakeups' => 56727,
'socket_failure_count' => 0,
'lifetime_count' => 0,
'light_sensor_data_valid' => $VAR1->[0]{'auto_test'},
'camera_id' => 177502,
'error_codes' => 0,
'ipv' => 'ipv4',
'lfr_tb_wakeups' => 65293,
'temperature' => 66,
'light_sensor_ch0' => 0,
'dev_2' => 713,
'time_108_boot' => 54415,
'time_first_video' => 129266,
'time_wlan_connect' => 563347,
'fw_version' => '2.135',
'time_dns_resolve' => 0,
'dev_3' => 661082188,
'updated_at' => '2019-01-13T18:34:40+00:00',
'wifi_connect_failure_count' => 0,
'battery_voltage' => 172,
'lifetime_duration' => 0,
'network_id' => 62699,
'time_dhcp_lease' => 730271,
'light_sensor_data_new' => $VAR1->[0]{'auto_test'},
'mac' => 'f4:b8:5e:67:50:4c',
'sync_module_id' => 124732,
'lfr_strength' => -40,
'created_at' => '2018-12-24T20:05:45+00:00'
},
'mfg_main_range' => 180902930,
'status' => 'done',
'serial' => '661082188',
'unit_number' => 2,
'motion_regions' => 33554431,
'mfg_main_type' => 'XME',
'buzzer_on' => $VAR1->[0]{'motion_regions_compatible'},
'thumbnail' => '/media/production/account/49605/network/62699/camera/177502/clip_7npAdegP_2019_01_13__18_34PM',
'clip_warning_threshold' => 15,
'temp_alert_state' => 'in_range',
'record_audio_enable' => $VAR1->[0]{'motion_regions_compatible'},
'sync_module_id' => 124732,
'a1' => $VAR1->[0]{'auto_test'},
'created_at' => '2018-12-24T20:05:36+00:00',
'liveview_rate' => 0,
'temp_alarm_enable' => $VAR1->[0]{'auto_test'},
'battery_voltage' => 172,
'id' => 177502,
'mac_address' => undef,
'battery_state' => 'ok',
'clip_max_length' => 60,
'battery_check_time' => '2019-01-13T18:46:31+00:00',
'siren_volume' => undef,
'clip_rate' => 666,
'early_termination_supported' => $VAR1->[0]{'motion_regions_compatible'},
'lfr_alert_count' => 0,
'motion_alert' => $VAR1->[0]{'motion_regions_compatible'},
'clip_bitrate' => 666,
'type' => 'xt',
'deleted_at' => undef,
'last_offline_alert' => undef,
'alert_tone_enable' => $VAR1->[0]{'motion_regions_compatible'},
'battery_voltage_threshold' => 512,
'battery_alarm_enable' => $VAR1->[0]{'auto_test'},
'illuminator_intensity' => 4,
'alert_repeat' => 'off',
'temp_max' => undef,
'temp_adjust' => 0,
'early_termination' => $VAR1->[0]{'motion_regions_compatible'},
'motion_sensitivity' => '5',
'video_quality' => 'standard',
'video_quality_support' => [
'saver',
'standard',
'best'
],
'last_battery_alert' => undef,
'retry_count' => 0,
'record_audio' => $VAR1->[0]{'motion_regions_compatible'},
'wifi_strength' => -43,
'account_id' => 49605,
'network' => 62699,
'wifi_timeout' => 30,
'enabled' => $VAR1->[0]{'motion_regions_compatible'},
'mfg_mez_type' => 'XTE',
'account' => 49605,
'last_wifi_alert' => undef,
'illuminator_duration' => 1,
'liveview_bitrate' => 0,
'camera_seq' => 2,
'video_50_60hz' => 'freq_60hz'
}
];
2019-09-15 19:42:29 cmd cameraThumbnail
2019-09-15 20:22:46 cmdResult SUCCESS
2019-09-15 19:13:06 eventTimestamp 2019-09-15T17:12:34+00:00
2019-05-11 20:31:44 liveVideo rtsps://lv3-app-prde.immedia-semi.com:443/uMEplqA74EFuE9RL__IMDS_661082188
2019-09-15 20:22:46 networkArmed 1
2019-09-15 20:22:46 networkCamera177500 Kellereingang:armed
2019-09-15 20:22:46 networkCamera177500Active armed
2019-09-15 20:22:46 networkCamera177500Batt 3
2019-09-15 19:42:42 networkCamera177500File www/tablet/BlinkCamera/Kameras/thumbnail/camera/BlinkCamera_Kameras_thumbnail_camera_177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg
2019-09-15 19:42:42 networkCamera177500Img <html><a href="/fhem/BlinkCamera/Kameras/thumbnail/camera/177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg"><img src="/fhem/BlinkCamera/Kameras/thumbnail/camera/177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg" height=36 widht=64>/fhem/BlinkCamera/Kameras/thumbnail/camera/177500_clip_f96j1yGx_2019_09_15__17_42PM.jpg</a></html>
2019-09-15 20:22:46 networkCamera177500Name Kellereingang
2019-09-15 20:22:46 networkCamera177500Temp 62
2019-09-15 20:22:46 networkCamera177500Thumbnail /media/production/account/49605/network/62699/camera/177500/clip_f96j1yGx_2019_09_15__17_42PM
2019-09-15 20:22:46 networkCamera177500Url /fhem/BlinkCamera/Kameras/thumbnail/camera/177500.jpg
2019-09-15 20:22:46 networkCamera177502 Haustuer:armed
2019-09-15 20:22:46 networkCamera177502Active armed
2019-09-15 20:22:46 networkCamera177502Batt 3
2019-09-14 10:39:47 networkCamera177502File www/tablet/BlinkCamera/Kameras/thumbnail/camera/BlinkCamera_Kameras_thumbnail_camera_177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg
2019-09-14 10:39:47 networkCamera177502Img <html><a href="/fhem/BlinkCamera/Kameras/thumbnail/camera/177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg"><img src="/fhem/BlinkCamera/Kameras/thumbnail/camera/177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg" height=36 widht=64>/fhem/BlinkCamera/Kameras/thumbnail/camera/177502_clip_MXz4PBdX_2019_09_14__08_39AM.jpg</a></html>
2019-09-15 20:22:46 networkCamera177502Name Haustuer
2019-09-15 20:22:46 networkCamera177502Temp 68
2019-09-15 20:22:46 networkCamera177502Thumbnail /media/production/account/49605/network/62699/camera/177502/clip_MXz4PBdX_2019_09_14__08_39AM
2019-09-15 20:22:46 networkCamera177502Url /fhem/BlinkCamera/Kameras/thumbnail/camera/177502.jpg
2019-09-15 20:22:46 networkCameras 177500:Kellereingang
177502:Haustuer
2019-09-15 20:22:46 networkName Zuhause
2019-09-15 20:22:46 networkNotifications 1
2019-09-15 20:22:46 networkStatus ok
2019-09-15 20:22:46 networkSyncModule 124732:online
2019-09-14 20:45:18 networks 62699:Zuhause
2019-09-14 20:45:18 region prde
2019-09-14 20:45:18 regionName Europe
2019-09-12 20:36:02 truefalse Error evaluating Kameras userReading truefalse: Bareword "true" not allowed while "strict subs" in use at (eval 122300) line 1.
Bareword "false" not allowed while "strict subs" in use at (eval 122300) line 1.
2019-09-15 19:13:09 video <html><a href="/fhem/BlinkCamera/Kameras/video/400159236.mp4">Video Id:400159236: /fhem/BlinkCamera/Kameras/video/400159236.mp4</a></html>
2019-09-15 19:13:09 videoFilename BlinkCamera_Kameras_video_400159236.mp4
2019-09-15 19:13:09 videoID 400159236
cmdQueue:
getoptions:
cameraList
getInfo
getInfoCamera Kellereingang,177500,Haustuer,177502,all
getThumbnail Kellereingang,177500,Haustuer,177502,all
getVideoAlert
liveview Kellereingang,177500,Haustuer,177502,all
setoptions:
arm
camDisable Kellereingang,177500,Haustuer,177502,all
camEnable Kellereingang,177500,Haustuer,177502,all
disarm
login
reset
videoDelete
zDebug
Attributes:
event-on-change-reading .*
group Kamera
imgOriginalFile 1
oldreadings alertID
pollingTimeout 30
proxyDir www/tablet/BlinkCamera/Kameras/thumbnail/camera/
room Wohnzimmer
userReadings {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}
verbose 3
Du musst schon mit angeben WIE das userreadings HEISSEN soll ;)
Also:
attr DeviceName userreadings UserReadingsName UserReadingsWoSollDerWertHer ;)
Gruß, Joachim
Du meinst das userReadings Attribut müsste so aussehen?
truefalse {(ReadingsVal("Kameras","alertID","neu") ne OldreadingsVal("Kameras","alertID","alt"))?"true":"false"}
Zum Beispiel...
...oder: toggle -> siehe: https://forum.fhem.de/index.php/topic,100053.msg934547.html#msg934547 ;)
Oder wie auch immer du es haben magst...
...nur ohne ist halt "doof"...
https://wiki.fhem.de/wiki/UserReadings
Zitat von: commandref
userReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:
<reading>[:<trigger>] [<modifier>] { <perl code> }
Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird. Falls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).
Beispiele:
attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }
attr myMultiMeter userReadings energy1:counters.A.* {ReadingsVal("myMultiMeter","counters.A",0)/1250.0}, energy2:counters.B.* {ReadingsVal("myMultiMeter","counters.B",0)/1250.0}
<modifier> kann die folgenden Werte haben:
none: als ob man es gar nicht spezifiziert hätte.
difference: das Reading wird auf die Differenz zw. dem aktuellen und dem vorherigen Wert gesetzt.
differential: das Reading wird auf die Differenz zw. dem aktuellen und dem vorherigen Wert, geteilt durch die Sekunden zw. der aktuellen Zeit und der letzten Auswertung, sekundengenau. Kein Wert wird berechnet, falls der Unterschied unter eine Sekunde liegt.
integral: das Gegenteil von differential. Das Ergebnis wird um das Produkt aus der Zeit-Differenz und der Durschnittswert der letzten zwei Readings erhöht.
result += (time - timeold) * (oldval + value) / 2
offset: wenn der aktuellen Wert kleiner als der vorherige Wert ist wird der vorherige Wert zum Reading addiert. Das Reading kann dann als offset verwendet werden um einen Zähler der durch Sromverlust zurückgesetzt wird zu korrigieren.
monotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen Wert positiv ist wird diese Differenz zum Reading addiert. Damit lässt sich von einem Zähler der bei Stromverlust zurückgesetzt wird ein monoton wachsender Zähler ableiten.
Beispiel:
attr myPowerMeter userReadings power differential { ReadingsVal("myPowerMeter","counters.A",0)/1250.0}
Achtung:
Falls difference oder differential spezifiziert ist, dann werden für die Berechnung ältere Werte benötigt, d.h. der Wert wird frühestens beim zweiten Änderung gesetzt.
der Name der definierten Readings besteht aus alphanumerischen Zeichen, Unterstrich (_) und Minus-Zeichen (-).
Kommt/kam da kein Fehler!?
Gruß, Joachim
Doch gibt einen Fehler
ruefalse
Error evaluating Kameras userReading truefalse: Undefined subroutine &main::OldreadingsVal called at (eval 357707) line 1.
Sorry muss OldReadingsVal heißen...
...aber ein wenig selber suchen etc. darfst du schon noch...
Hatte ja geschrieben: nur als Idee nicht getestet (und nicht für copy/paste) ;)
EDIT: und mit Fehler meinte ich bei deiner Variante mit ohne Namen... ;)
Gruß, Joachim
Zitat von: MadMax-FHEM am 15 September 2019, 20:50:51
Sorry muss OldReadingsVal heißen...
...aber ein wenig selber suchen etc. darfst du schon noch...
Hatte ja geschrieben: nur als Idee nicht getestet (und nicht für copy/paste) ;)
EDIT: und mit Fehler meinte ich bei deiner Variante mit ohne Namen... ;)
Gruß, Joachim
Also so?
truefalse {(ReadingsVal("Kameras","alertID","neu") ne OldReadingsVal("Kameras","alertID","alt"))?"true":"false"}
Was meinst du mit deinem "Edit"? Das hab ich nicht ganz verstanden.
Aber schonmal danke für deine Hilfe
Ich meinte ob es keinen Fehler gegeben hat, also du deine Variante mit ohne Namen eingegeben hast...
...das mit OldreadingsVal ist klar, die "Funktion" heißt ja anders...
Gruß, Joachim
Jetzt bekomme ich tatsächlich ein true /false:-) mal sehen ob das mein grund problem löst.....
Erstmal danke für deine Hilfe
Vielleicht hättest du mal mit dem "Originalproblem" anfangen sollen ;)
Hätte ja sein können, dass "wir" da gleich helfen hätten können ;)
Dann kannst du den Thread ja als gelöst markieren: umbenennen des 1. Posts in "[gelöst] userreading anlegen"
Und dann viel Erfolg weiterhin, Joachim
Hm, zu früh gefreut......
Also das reading wird korrekt gefüllt beim ändern der alertID auf true, allerdings löst das mein Original problem leider nicht.....
Eigentlich müsste das reading immer auf false stehen, und beim ändern der alertID auf true wechseln, und 30 Sekunden später wieder auf false gehen, ich glaub das wäre es tatsächlich gelöst
Warum sollte das Reading nach 30sec "zurückfallen"!?
D.h. das Reading wird alle 30sec aktualisiert und nachdem es sich nicht geändert hat sollte es wieder false werden...
...kommen denn alle 30sec Events von alertID?
Und wie geschrieben: was ist eigentlich das "Ursprungs-Problem"!?
Vielleicht lässt sich das ja geschickter anders lösen...
Gruß, Joachim
Hi,
sorry hatte in letzter Zeit zu wenig zeit.....
Also mal mein ursprungs problem, ich habe zwei Blink Wlan Kameras, welche ich über das Blink MOdul in Fhem eingebunden habe, bei einem "Alarm" wird im Modul eine "alertid" gesetzt, die bis zum nächsten Alarm gleich bleibt.
Ich möchte aber gerne in der FTUI wenn ein Alarm ausgelöst wird ein PopUp haben, welches sich dann nach einer definierten Zeit wieder schließt, da die alertid aber bis zum nächsten Alarm gleichbleibt schließt das PopUp nicht.
Daher die idee mit dem userReading, welches bei alarm auf true geht und z.b. 30 sekunden später wieder auf false, damit sollte das PopUp bei Alarm auslösen und 30 sekunden später wieder verschwinden.
Achja,
und das FTUI Widget Adon benötigt ein reading welches true or false bzw. on/off liefert zum auswerten.