[gelöst] DbLog DbRep was passiert bei rename von Devices?

Begonnen von thburkhart, 12 Januar 2023, 20:32:40

Vorheriges Thema - Nächstes Thema

thburkhart

hallo
ich habe einige renames in meinen Devices vorgenommen.

was passiert dann in der DbLog? werden dort die renames automatisch nachgeführt?
oder muss man dazu noch was anstoßen?

ich habe folgendes schon definiert:

[code]define Rep_MAX DbRep dblog_THB
attr Rep_MAX alias Rep_MAX
attr Rep_MAX devStateIcon connected:10px-kreis-gelb .*disconnect:10px-kreis-rot .*done:10px-kreis-gruen
attr Rep_MAX icon security
attr Rep_MAX role Agent
attr Rep_MAX room DBLog
attr Rep_MAX showproctime 1
attr Rep_MAX stateFormat { ReadingsVal("$name","state", undef) eq "running" ? "renaming" : ReadingsVal("$name","state", undef). " » ProcTime: ".ReadingsVal("$name","sql_processing_time", undef)." sec"}
attr Rep_MAX timeout 86400
attr Rep_MAX verbose 4
#   DATABASE   fhem
#   DEF        dblog_THB
#   FUUID      5db3f6eb-f33f-9b0e-f035-13418cfa2cbf577d
#   FVERSION   93_DbRep.pm:v8.50.10-s26940/2023-01-01
#   LASTCMD     
#   MODEL      Agent
#   NAME       Rep_MAX
#   NOTIFYDEV  global,Rep_MAX
#   NR         66
#   NTFY_ORDER 50-Rep_MAX
#   ROLE       Agent
#   STATE      done » ProcTime: 2.0339 sec
#   TYPE       DbRep
#   UTF8       1
#   eventCount 8
#   HELPER:
#     DBLOGDEVICE dblog_THB
#     GRANTS     USAGE,INSERT,DELETE,SELECT,UPDATE
#     IDRETRIES  3
#     MINTS      2022-12-11 12:00:00
#     NEWDEV     TUYA_Temp7
#     OLDDEV     TUYA_TEMP7
#     PACKAGE    main
#     RENMODE    devren
#     VERSION    8.50.10
#     DBREPCOL:
#       COLSET     1
#       DEVICE     64
#       EVENT      512
#       READING    64
#       TYPE       64
#       UNIT       32
#       VALUE      128
#   Helper:
#     DBLOG:
#       background_processing_time:
#         dblog_THB:
#           TIME       1673550460.01733
#           VALUE      2.0390
#       connectionEncoding:
#         dblog_THB:
#           TIME       1673548855.42217
#           VALUE      utf8mb4
#       dbEncoding:
#         dblog_THB:
#           TIME       1673548855.42217
#           VALUE      utf8
#       device_not_renamed:
#         dblog_THB:
#           TIME       1673550286.98775
#           VALUE      WARNING - old: SVG_TUYA_TEMP6 not found
#       device_renamed:
#         dblog_THB:
#           TIME       1673550460.01733
#           VALUE      old: TUYA_TEMP7 to new: TUYA_Temp7
#       indexState:
#         dblog_THB:
#           TIME       1673548855.42217
#           VALUE      Index Report_Idx doesn't exist. Please create the index by "set Rep_MAX index recreate_Report_Idx" command !
#       number_lines_updated:
#         dblog_THB:
#           TIME       1673550460.01733
#           VALUE      69
#       sql_processing_time:
#         dblog_THB:
#           TIME       1673550460.01733
#           VALUE      2.0339
#       state:
#         dblog_THB:
#           TIME       1673550460.01733
#           VALUE      done
#       timestamp_oldest_dataset:
#         dblog_THB:
#           TIME       1673548855.42217
#           VALUE      2022-12-11 12:00:00
#       userRights:
#         dblog_THB:
#           TIME       1673548855.42217
#           VALUE      USAGE,INSERT,DELETE,SELECT,UPDATE
#   OLDREADINGS:
#   READINGS:
#     2023-01-12 20:07:40   background_processing_time 2.0390
#     2023-01-12 20:07:40   device_renamed  old: TUYA_TEMP7 to new: TUYA_Temp7
#     2023-01-12 20:07:40   number_lines_updated 69
#     2023-01-12 20:07:40   sql_processing_time 2.0339
#     2023-01-12 20:07:40   state           done
#
setstate Rep_MAX done » ProcTime: 2.0339 sec
setstate Rep_MAX 2023-01-12 20:07:40 background_processing_time 2.0390
setstate Rep_MAX 2023-01-12 20:07:40 device_renamed old: TUYA_TEMP7 to new: TUYA_Temp7
setstate Rep_MAX 2023-01-12 20:07:40 number_lines_updated 69
setstate Rep_MAX 2023-01-12 20:07:40 sql_processing_time 2.0339
setstate Rep_MAX 2023-01-12 20:07:40 state done

[/code]

es ist aber so, dass die neuen Device-Namen im GPLOT-Editor nich angeboten werden.
Ebenso finden sich im entsprechenden drop-down-Feld immer noch in der Datenbank gelöschte Devices

wie kommt das ?
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

betateilchen

Zitat von: thburkhart am 12 Januar 2023, 20:32:40
was passiert dann in der DbLog?

Nix.

Zitat von: thburkhart am 12 Januar 2023, 20:32:40
werden dort die renames automatisch nachgeführt?

Nein.

Zitat von: thburkhart am 12 Januar 2023, 20:32:40
oder muss man dazu noch was anstoßen?

Ja. Commandref zu DbRep lesen, dort ist das beschrieben.

Wirst Du es eigentlich irgendwann noch lernen, Deine Fragen in den richtigen Unterforen zu stellen, anstatt die alle hier auf die Müllkippe abzuladen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

thburkhart

danke dir ...

Zitat von: betateilchen am 12 Januar 2023, 20:36:50

Wirst Du es eigentlich irgendwann noch lernen, Deine Fragen in den richtigen Unterforen zu stellen, anstatt die alle hier auf die Müllkippe abzuladen?

ich bin doch im Forum Anfängerfragen?!
was wäre denn das richtige? gibt es für DBLog ein Unterforum?

in der Command-Ref habe ja diesen Agenten gefunden, der aber bei GPLOTS nicht wirksam wird. Oder dauert dies ne Weile.

Warum werden im GPLOT-Editor unabhängig von rename nicht aktuelle Datenbankdaten.
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

thburkhart

#3
der Anfänger meldet sich nochmals:

im Log finde ich zum DBRepAgent:

2023.01.16 11:14:19 3: DbRep DBrenameAgent1 - Connectiontest to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser
2023.01.16 11:14:19 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 676921) line 1.
2023.01.16 11:14:19 3: eval:  ReadingsVal("$name","state", undef) eq "running" ? "renaming" : ReadingsVal("$name","state", undef). " » ProcTime: ".ReadingsVal("$name","sql_processing_time", undef)." sec"
2023.01.16 11:14:19 4: DbRep DBrenameAgent1 - Database connect - user: fhemuser, UTF-8 option set: no
2023.01.16 11:14:22 4: DbRep DBrenameAgent1 - Oldest timestamp determined: 2022-12-11 12:00:00
2023.01.16 11:14:22 4: DbRep DBrenameAgent1 - Encoding of database determined: utf8
2023.01.16 11:14:22 3: DbRep DBrenameAgent1 - WARNING - Index Report_Idx doesn't exist. Please create the index by "set DBrenameAgent1 index recreate_Report_Idx" command !
2023.01.16 11:14:22 4: DbRep DBrenameAgent1 - Grants determined: DELETE,USAGE,UPDATE,SELECT,INSERT
2023.01.16 11:14:22 3: DbRep DBrenameAgent1 - Initial data information retrieved - total time used: 3.0814 seconds
2023.01.16 11:14:23 3: DbRep DBrenameAgent1 - Connectiontest to db mysql:database=fhem;host=localhost;port=3306 successful



was bedeutet die Fehlermeldung von Perl effective?

hier die zug. DEF:

[code]define DBrenameAgent1 DbRep dblog_THB
attr DBrenameAgent1 alias renameAgent1
attr DBrenameAgent1 devStateIcon connected:10px-kreis-gelb .*disconnect:10px-kreis-rot .*done:10px-kreis-gruen
attr DBrenameAgent1 icon security
attr DBrenameAgent1 role Agent
attr DBrenameAgent1 room DBLog
attr DBrenameAgent1 showproctime 1
attr DBrenameAgent1 stateFormat { ReadingsVal("$name","state", undef) eq "running" ? "renaming" : ReadingsVal("$name","state", undef). " » ProcTime: ".ReadingsVal("$name","sql_processing_time", undef)." sec"}
attr DBrenameAgent1 timeout 86400
attr DBrenameAgent1 verbose 4
#   DATABASE   fhem
#   DEF        dblog_THB
#   FUUID      5db3f6eb-f33f-9b0e-f035-13418cfa2cbf577d
#   FVERSION   93_DbRep.pm:v8.51.2-s27047/2023-01-13
#   LASTCMD     
#   MODEL      Agent
#   NAME       DBrenameAgent1
#   NOTIFYDEV  global,DBrenameAgent1
#   NR         78
#   NTFY_ORDER 50-DBrenameAgent1
#   ROLE       Agent
#   STATE      connected » ProcTime: 3.0727 sec
#   TYPE       DbRep
#   UTF8       1
#   eventCount 2
#   HELPER:
#     DBLOGDEVICE dblog_THB
#     GRANTS     DELETE,USAGE,UPDATE,SELECT,INSERT
#     IDRETRIES  3
#     MINTS      2022-12-11 12:00:00
#     PACKAGE    main
#     VERSION    8.51.2
#     DBREPCOL:
#       COLSET     1
#       DEVICE     64
#       EVENT      512
#       READING    64
#       TYPE       64
#       UNIT       32
#       VALUE      128
#   Helper:
#     DBLOG:
#       background_processing_time:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      3.0814
#       connectionEncoding:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      utf8mb4
#       dbEncoding:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      utf8
#       indexState:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      Index Report_Idx doesn't exist. Please create the index by "set DBrenameAgent1 index recreate_Report_Idx" command !
#       sql_processing_time:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      3.0727
#       state:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      connected
#       timestamp_oldest_dataset:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      2022-12-11 12:00:00
#       userRights:
#         dblog_THB:
#           TIME       1673864062.92498
#           VALUE      DELETE,USAGE,UPDATE,SELECT,INSERT
#   READINGS:
#     2023-01-16 11:14:22   background_processing_time 3.0814
#     2023-01-16 11:14:22   connectionEncoding utf8mb4
#     2023-01-16 11:14:22   dbEncoding      utf8
#     2023-01-16 08:20:55   errortext       Can't use admin credentials for database access, see logfile !
#     2023-01-16 11:14:22   indexState      Index Report_Idx doesn't exist. Please create the index by "set DBrenameAgent1 index recreate_Report_Idx" command !
#     2023-01-16 11:14:22   sql_processing_time 3.0727
#     2023-01-16 11:14:22   state           connected
#     2023-01-16 11:14:22   timestamp_oldest_dataset 2022-12-11 12:00:00
#     2023-01-16 11:14:22   userRights      DELETE,USAGE,UPDATE,SELECT,INSERT
#
setstate DBrenameAgent1 connected » ProcTime: 3.0727 sec
setstate DBrenameAgent1 2023-01-16 11:14:22 background_processing_time 3.0814
setstate DBrenameAgent1 2023-01-16 11:14:22 connectionEncoding utf8mb4
setstate DBrenameAgent1 2023-01-16 11:14:22 dbEncoding utf8
setstate DBrenameAgent1 2023-01-16 08:20:55 errortext Can't use admin credentials for database access, see logfile !
setstate DBrenameAgent1 2023-01-16 11:14:22 indexState Index Report_Idx doesn't exist. Please create the index by "set DBrenameAgent1 index recreate_Report_Idx" command !
setstate DBrenameAgent1 2023-01-16 11:14:22 sql_processing_time 3.0727
setstate DBrenameAgent1 2023-01-16 11:14:22 state connected
setstate DBrenameAgent1 2023-01-16 11:14:22 timestamp_oldest_dataset 2022-12-11 12:00:00
setstate DBrenameAgent1 2023-01-16 11:14:22 userRights DELETE,USAGE,UPDATE,SELECT,INSERT

[/code]

wobei ich #     2023-01-16 08:20:55   errortext       Can't use admin credentials for database access, see logfile ! selbst erkenne ;-)
wo und wie gebe ich diese admin credentials?

den Befehl  set DBrenameAgent1 index recreate_Report_Id hatte ich über die Behlszeile abgesetzt. (wohl ohne Erfolg) ?

herzlichen Dank für  Hilfe
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

thburkhart

Nachtrag:

Steht das 2023.01.16 12:32:17 1: PERL WARNING: Argument "dblog_THB" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 933, <GEN21964> line 200.
2023.01.16 12:32:20 1: PERL WARNING: Argument "= 2" isn't numeric in numeric ne (!=) at ./FHEM/98_SVG.pm line 2275.
im Zusammenhang
und/oder wie löse ist das?
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

DS_Starter

Hallo Thomas,

versuche doch mal bitte die Dinge die dir unterkommen nicht allesamt in einen Thread zu werfen, sondern stelle in den jeweiligen Unterforen deine Frage.
Wenn du das Forum nicht herausbekommst (normalerweise mit help <Modul>) oder für dich nicht zuordnen kannst, dann trenne doch zumindest die Themen die dich bewegen sinnvoll. 
Sonst ist es wirklich schwer und frustrierend Hilfe zu leisten weil man von Thema zu Thema springt und der Thread aus dem Ruder läuft.

Zum Beispiel:

Zitat
wobei ich
Code: [Auswählen]

#     2023-01-16 08:20:55   errortext       Can't use admin credentials for database access, see logfile !

selbst erkenne ;-)
wo und wie gebe ich diese admin credentials?

Das ist eine Frage zu DbRep und wäre bei "Sonstiges" richtig (-> help DbRep -> Module: 93_DbRep.pm Maintainer: DS_Starter Forum: Sonstiges ).

Du gibst die admin credentials im DbRep ein mit

       "set ... adminCredentials ....".

Und diese Frage

Zitat
Nachtrag:

Steht das
Code: [Auswählen]

2023.01.16 12:32:17 1: PERL WARNING: Argument "dblog_THB" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 933, <GEN21964> line 200.
2023.01.16 12:32:20 1: PERL WARNING: Argument "= 2" isn't numeric in numeric ne (!=) at ./FHEM/98_SVG.pm line 2275.

im Zusammenhang
und/oder wie löse ist das?

wäre im SVG-Forum bzw. Automatisierung-Forum (help FileLog ->Module: 92_FileLog.pm Maintainer: rudolfkoenig Forum: Automatisierung ) richtig platziert.
Allerdings wird die Suchfunktion zumindest für die SVG-Warnung viele Treffer liefern.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Die Frage hatte ich übersehen (die passt auch zum eigentlichen Thema  ;) )

Zitat
es ist aber so, dass die neuen Device-Namen im GPLOT-Editor nich angeboten werden.
Ebenso finden sich im entsprechenden drop-down-Feld immer noch in der Datenbank gelöschte Devices

wie kommt das ?

Der Agent führt die Umbenennungen zur Zeit nur in der history-Tabelle durch, da sie die Datenquelle für die SVG-Anzeige ist.
Die Drop-Down Liste wird aus der current Tabelle generiert. Es ist auch ihre einzige Aufgabe.
Wenn du neue Devices in FHEM erstellst, erscheinen sie bzw. deren Readings erst dann in der Drop-Down Liste wenn der erste Wert des Device:Readings geloggt wurde.
Vorher kennt die Datenbank diese Devices/Readings nicht.

Du kannst den Inhalt der current-Tabelle löschen und komplett neu befüllen lassen mit den DbRep-Kommandos tableCurrentPurge, tableCurrentFillup.
Oder du löscht den Inhalt nur und hast etwas Geduld bis DbLog die Tabelle neu aufgebaut hat.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

thburkhart

hallo,

ich habe nun gestern meine MAX-Devices mit z.B. mitrename THOMAS_WT MAX_THOMAS_WT umbenannt.
Der RepAgent werkelte erfolgreich und hat einige der readings in der DM umbenannt; aber eben nicht alle:

[code]define SVG_MAX_THOMAS_WT SVG dblog_THB:SVG_MAX_THOMAS_WT:HISTORY
attr SVG_MAX_THOMAS_WT alias SVG_MAX_THOMAS_WT
attr SVG_MAX_THOMAS_WT fixedrange 10days
attr SVG_MAX_THOMAS_WT label "Min $data{min1}, Max $data{max1}, L-Ist $data{currval1}, L-Soll $data{currval2}"
attr SVG_MAX_THOMAS_WT plotfunction THOMAS_WT
attr SVG_MAX_THOMAS_WT room Thomas,MAXW
attr SVG_MAX_THOMAS_WT title "THOMAS"
#   DEF        dblog_THB:SVG_MAX_THOMAS_WT:HISTORY
#   FUUID      5de13dfe-f33f-9b0e-2340-09e8c6606fdf5386
#   GPLOTFILE  SVG_MAX_THOMAS_WT
#   LOGDEVICE  dblog_THB
#   LOGFILE    HISTORY
#   NAME       SVG_MAX_THOMAS_WT
#   NR         1104
#   STATE      initialized
#   TYPE       SVG
#
setstate SVG_MAX_THOMAS_WT initialized

[/code]

im Ploteditor steht aber noch der alte Name
THOMAS_WT:temperature statt MAX_THOMAS_WT:temperature. Letzteres kann ich im Dropdownfeld auch nicht erblättern.

Nach einem Tag müssten die doch in der history stehen ?
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

thburkhart

hoffe, dass dies hierher gehört:

2023.01.20 19:03:48 1: PERL WARNING: Argument "= 2" isn't numeric in numeric ne (!=) at ./FHEM/98_SVG.pm line 2275.
2023.01.20 19:03:48 1: PERL WARNING: Argument "= 2" isn't numeric in numeric ne (!=) at ./FHEM/98_SVG.pm line 2275.


das kommt wohl aus dem SVG Modul?
ist das wohl unkritisch?
wenn nein, was kann ich dagegen tun?

Grüße
Thomas
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

DS_Starter

#9
Zitat
im Ploteditor steht aber noch der alte Name
siehe meine Erläuterung in #6.

Zitat
MAX_THOMAS_WT:temperature

. Letzteres kann ich im Dropdownfeld auch nicht erblättern.

Nach einem Tag müssten die doch in der history stehen ?

Für die Drop-Down-Liste ist die current-Tabelle relevant (siehe wieder #6).
Was dort drin steht, kann man sich mit einem DbRep "set ... fetchrows current" anzeigen lassen.

Zitat
hoffe, dass dies hierher gehört:
Nein ... (!=) at ./FHEM/98_SVG.pm line 2275.

Zitatist das wohl unkritisch?
Ja, wie der Hinweis WARNING schon sagt.

Zitat
wenn nein, was kann ich dagegen tun?

Sich die Meldung anschauen und erkennen dass ein String mit einem numerischen Wert verglichen werden soll was zu der Warnung führt.
Dann bisschen weiter oben meine Antwort in #5 zu der gleichen Frage anschauen und die Suchfunktion des Forums verwenden oder eine Suchmaschine deiner Wahl das I-Net befragen oder aber im SVG-Forum fragen. 
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter