Hallo all,
leider haben mich weder Versuche noch Suche im Forum weitergebracht, daher meine Frage:
Ich hab recht neu drei Nest Protect-Rauch-und CO-Melder. Dafür gibt es schon ein (beta-)Modul, vielen Dank dem Ersteller. "Problem" dabei: dieses Modul liest die gesamten Kontendaten für alle drei Rauchmelder aus und speichert diese in Readings, es erstellt aber kein eigenes Gerät pro Rauchmelder. Dies versuchte ich jetzt mal zu machen; mit readingsGroup-Definitionen und Mappings, die die hässlichen Readings-Namen (die sehen zB so aus: "devices_smoke_co_alarms_pmxpMKgsVDxE8SVOt8zxzAdQxXlShtQp_battery_health" statt "battery") in allgemeingängige verwandeln, sieht es schonmal ganz gut aus, allerdings sind das halt keine Devices - und werden dadurch ihrerseits nicht durch "automatische" ReadingGroups (zB der kollektive "Battery"-Sammelpunkt lt. Wiki) erfasst.
Eine zweite Idee war jetzt, readingsProxy zu verwenden; allerdings bekomme ich es nicht hin, da mehr als ein Reading abzugreifen (dafür wars ja auch gemacht worden), vermutlich geht das auch gar nicht - oder doch?
Gibt es ggf. noch andere Ideen, wie ich mir meine Devices selber zusammenbasteln könnte aus den Readings des einen Sammeldevices?
Danke für jeden Vorschlag - ggf. auch Suchvorschlag, alle meine Ideen von SChlagwörtern haben mir nix gangbares gezeigt.
LG
Martin
Ich brauche mehr Daten (z.Bsp. alle Events), damit ich bessere Antworten geben kann, solange rate ich: mit einem notify koennte man die geraetespezifischen Readings zu unterschiedlichen dummys mit besseren Namen umleiten. Folgendes Beispiel geht davon aus, dass die NEST Instanz mynest heisst.
define myNestDev1 dummy
defmod myNestDev1Ntfy notify mynest:.*pmxpMKgsVDxE8SVOt8zxzAdQxXlShtQp_.* { $EVENT=~m/.*pmxpMKgsVDxE8SVOt8zxzAdQxXlShtQp_([^ ]*) (.*)/;; fhem("setreading myNestDev1 $1 $2") }
Das macht dann aus deinem Beispiel sowas:fhem> trigger mynest devices_smoke_co_alarms_pmxpMKgsVDxE8SVOt8zxzAdQxXlShtQp_battery_health ok
2018-06-25 19:58:11 dummy myNestDev1 battery_health: ok
Auf Lange Sicht waere aber besser, das NEST-Modul auf zweistufig umzubauen.
Und wegen battery-Werte hatten wir gerade eine Diskussion.
Salut Rudi,
Vielen Dank für den Tipp - das hatte ich (weit weniger elegant allerdings) fast vermutet...
Da ich stets ehrfürchtig staunend Fhem und die EntwicklerInnen betrachte, will ich da niemandem was vorschlagen, der eh schon unheimlich viel Arbeit reinhängt, daher meine Frage - eher vertrau ich auf meine eigene Blindheit. Dann versuch ich mal, mit deinem Beispiel weiterzubasteln. Wenns was wird, klopp ich's hier rein oder ins Wiki.
Danke schomma! :)
Martin
Salut nochmal,
wegen nem ausgedehnten Krankenhausaufenthalt erst jetzt nochmal:
Dürfte ich nochmal um Hilfe bitten mangels ausreichender PERL-Kenntnisse? Irgendwo ist da offenbar ein "unsupported character" im den Readings, aber außer einem Leerzeichen (das ich nicht sähe) könnte ich da nix finden, und ich wäre mir unsicher, wo auch dieses ggf. einbauen.
Folgendes ist jetzt definiert (wie vorgeschlagen):
Grund-Device: Name: NESTprotect, Readings unten
Dummy-Device:
Internals:
CFGFN
NAME d_NESTprotectGang
NR 1039
STATE ???
TYPE dummy
Attributes:
event-on-change-reading .*
group Feuermelder
room Alarm,_dummy
Notify:
Internals:
CFGFN
DEF NESTprotect:.*pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_.*
{
$EVENT=~m/.*pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_([^ ]*) (.*)/;
fhem("setreading d_NESTprotectGang $1 $2")
}
NAME n_NESTprotectGang
NOTIFYDEV NESTprotect
NR 1061
NTFY_ORDER 50-n_NESTprotectGang
REGEXP NESTprotect:.*pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_.*
STATE 2018-08-30 11:51:37
TRIGGERTIME 1535622698.02178
TYPE notify
Helper:
DBLOG:
state:
fhemlogdb:
TIME 1535622676.13214
VALUE active
READINGS:
2018-08-30 11:51:16 state active
Attributes:
group Feuermelder
room _notify
Im Log ergeben sich beim Trigger des Notify nun folgende Einträge:
2018.08.30 11:51:38 3: setreading d_NESTprotectGang name_long: Hallway Nest Protect : WARNING: unsupported character in reading name_long: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading name_long: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang locale: de-DE : WARNING: unsupported character in reading locale: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading locale: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang battery_health: ok : WARNING: unsupported character in reading battery_health: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading battery_health: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang structure_id: WLM_n1fmX9T4adD_Hcohn81CsO_P05hWlOEgQdJ_bgzkxQjM3L2qPg : WARNING: unsupported character in reading structure_id: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading structure_id: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang last_connection: 2018-08-30T09:13:14.248Z : WARNING: unsupported character in reading last_connection: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading last_connection: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang last_manual_test_time: 2018-06-27T10:36:46.000Z : WARNING: unsupported character in reading last_manual_test_time: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading last_manual_test_time: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang device_id: pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp : WARNING: unsupported character in reading device_id: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading device_id: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang where_id: Vz0uwe6iB3OScVFgDLtRMJxQfHrwWq3O4PQFn8xmYlQfzBLWV8VlVg : WARNING: unsupported character in reading where_id: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading where_id: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang where_name: Hallway : WARNING: unsupported character in reading where_name: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading where_name: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang smoke_alarm_state: ok : WARNING: unsupported character in reading smoke_alarm_state: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading smoke_alarm_state: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang software_version: 3.1.4rc3 : WARNING: unsupported character in reading software_version: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading software_version: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang ui_color_state: green : WARNING: unsupported character in reading ui_color_state: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading ui_color_state: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang co_alarm_state: ok : WARNING: unsupported character in reading co_alarm_state: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading co_alarm_state: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: setreading d_NESTprotectGang name: Hallway : WARNING: unsupported character in reading name: (not A-Za-z/\d_\.-)
2018.08.30 11:51:38 3: n_NESTprotectGang return value: WARNING: unsupported character in reading name: (not A-Za-z/\d_\.-)
Hier der entsprechende List-Ausschnitt des "Grund"-Devices "NESTprotect":
Internals:
CFGFN
DEF SXHM885U interval 01:00
Interval interval
NAME NESTprotect
NOTIFYDEV NESTprotect
NR 971
NTFY_ORDER 50-NESTprotect
PIN SXHM885U
STATE active
TYPE nestprotect
s_regexp NESTprotect:json:.*
t_regexp .*
version 0.16b
Helper:
DBLOG:
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_battery_health:
fhemlogdb:
TIME 1535622697.88616
VALUE ok
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_co_alarm_state:
fhemlogdb:
TIME 1535622697.88616
VALUE ok
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_device_id:
fhemlogdb:
TIME 1535622697.88616
VALUE pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_last_connection:
fhemlogdb:
TIME 1535622697.88616
VALUE 2018-08-30T09:13:14.248Z
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_last_manual_test_time:
fhemlogdb:
TIME 1535622697.88616
VALUE 2018-06-27T10:36:46.000Z
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_locale:
fhemlogdb:
TIME 1535622697.88616
VALUE de-DE
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_name:
fhemlogdb:
TIME 1535622697.88616
VALUE Hallway
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_name_long:
fhemlogdb:
TIME 1535622697.88616
VALUE Hallway Nest Protect
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_smoke_alarm_state:
fhemlogdb:
TIME 1535622697.88616
VALUE ok
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_software_version:
fhemlogdb:
TIME 1535622697.88616
VALUE 3.1.4rc3
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_structure_id:
fhemlogdb:
TIME 1535622697.88616
VALUE WLM_n1fmX9T4adD_Hcohn81CsO_P05hWlOEgQdJ_bgzkxQjM3L2qPg
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_ui_color_state:
fhemlogdb:
TIME 1535622697.88616
VALUE green
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_where_id:
fhemlogdb:
TIME 1535622697.88616
VALUE Vz0uwe6iB3OScVFgDLtRMJxQfHrwWq3O4PQFn8xmYlQfzBLWV8VlVg
devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_where_name:
fhemlogdb:
TIME 1535622697.88616
VALUE Hallway
READINGS:
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_battery_health ok
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_co_alarm_state ok
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_device_id pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_last_connection 2018-08-30T09:13:14.248Z
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_last_manual_test_time 2018-06-27T10:36:46.000Z
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_locale de-DE
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_name Hallway
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_name_long Hallway Nest Protect
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_smoke_alarm_state ok
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_software_version 3.1.4rc3
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_structure_id WLM_n1fmX9T4adD_Hcohn81CsO_P05hWlOEgQdJ_bgzkxQjM3L2qPg
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_ui_color_state green
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_where_id Vz0uwe6iB3OScVFgDLtRMJxQfHrwWq3O4PQFn8xmYlQfzBLWV8VlVg
2018-08-30 11:51:37 devices_smoke_co_alarms_pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_where_name Hallway
Danke schonmal für jede Hilfe!
LG
Martin
Zitat2018.08.30 11:51:38 3: setreading d_NESTprotectGang name_long: Hallway Nest Protect : WARNING: unsupported character in reading name_long: (not A-Za-z/\d_\.-)
Das hier bemaengelte Reading heisst name_long: (Doppelpunkt is Teil des Namens!), und das passt den "neuen" Richtlinien nicht, da : als Trenner fuer diverse Operationen verwendet wird.
Hallo Rudi,
ich habs fast beffürchtet. Hast du auf die Schnelle vielleicht einen Trick, wie man ggf. das Notify anpassen könnte, damit es den ":" bei der Benennung des Readings weglässt? In
$EVENT=~m/.*pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_([^ ]*) (.*)/;
wird dieser Name ja, wenn ichs richtig verstehe, im ersten Teil extrahiert... kann man da (oder dann bei der Folgeverwendung $1 - wiederum richtiges Verständnis vorausgesetzt - diesen ":" ausnehmen?
RegExe sind toll, aber für mich immer noch ein wenig verwirrend...
VIelen Dank jedenfalls schonmal fürs drüberschauen!
Martin
ZitatHast du auf die Schnelle vielleicht einen Trick, wie man ggf. das Notify anpassen könnte, damit es den ":" bei der Benennung des Readings weglässt?
Die zulaessige Menge steht in der Fehlermeldung, und da du fragst, hast du vermutlich das Ersetzen kopiert :)
Ich wuerde es so bauen (ungetestet):
$EVENT=~m/.*pmxpMKgsVDoE8SVOt8znzAdQwXlShtQp_([^ ]*) (.*)/;
my ($readingName, $value) = ($1, $2);
$readingName =~ s/[^A-Za-z\d_\.-]//g;
fhem("setreading d_NESTprotectGang $readigName $value");
Salut Rudi,
vielen lieben Dank, das klappt super jetzt. Ich wäre grade noch verzweifelt, weil ich ständig ein
Global symbol "$readigName" requires explicit package name at (eval 153940) line 5.
bekommen habe - und dabei wars doch mit "my" definiert und alles - bis ich dann gesehen habe, dass in der letzten Zeile ein "n" bei $readigstate fehlte (und die Fehlermeldung das auch völlig korrekt angemahnt hat, es gab eben ein "readigs"... du wolltest mich testen, gell? ;)
Danke dir vielmals für den PERL-Grundkurs, Teil 0.5, und sorry für die doofen Fragen... Vielleicht fällt dann doch irgendwann mal der Groschen bei mir. :)
Martin