NEWS
Test Adapter Device-Watcher v2.x.x GitHub/Latest
-
@da_woody das stimmt.
Naja mal bisschen zum Fehler:
diesen Fehler mit localcompare gibt es schon ewig. Betrifft aber nur 1-2 User. Ich denke da liegt irgendwo eine Geräte Leiche rum oder so. Leider haben sich diese User noch nie bei mir gemeldet geschweige denn den Adapter mal aktualisiert. Die krebsen alle noch bei 0.3 rum usw. Ich sehe es nur in sentry kann aber nicht genau ausmachen was den Fehler produziert. Und diese 1-2 User spamen mit diesen Fehler auch extrem das sentry voll so das das Kontingent immer schnell ausgeschöpft ist. Ich hoffe ich kann nun mit Hilfe von dem Axel mal heraus finden warum und eine korrekte Behandlung mit einbauen damit das nicht mehr vorkommt. -
@ciddi89 Moin, sorry habe die Version 2.0.2
Leider bin ich im Github nicht so bewandert...
Folgendes habe ich probiert und festgestellt:
Alle anderen Abfragen funktionieren fehlerfrei, außer HM-RPC. Habe jetzt LOG auf DEBUG gestellt:device-watcher.0 2022-11-19 09:51:25.841 warn Error catched and sent to Sentry, error: [[writeDatapoints]] error: Cannot read properties of undefined (reading 'localeCompare') device-watcher.0 2022-11-19 09:51:25.788 debug Start the function: writeDatapoints device-watcher.0 2022-11-19 09:51:25.323 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-19 09:51:25.259 debug Function finished: resetVars device-watcher.0 2022-11-19 09:51:25.259 debug Function started: resetVars device-watcher.0 2022-11-19 09:51:25.258 debug Function started: createDataOfAllAdapter device-watcher.0 2022-11-19 09:51:25.258 debug Created and filled data for Hmrpc device-watcher.0 2022-11-19 09:51:25.257 debug Function finished: createDataForEachAdapter device-watcher.0 2022-11-19 09:51:25.257 debug Function finished: writeDatapoints device-watcher.0 2022-11-19 09:51:25.223 warn Error catched and sent to Sentry, error: [[writeDatapoints]] error: Cannot read properties of undefined (reading 'localeCompare') device-watcher.0 2022-11-19 09:51:25.033 debug Start the function: writeDatapoints device-watcher.0 2022-11-19 09:51:24.578 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-19 09:51:24.569 debug Function finished: resetVars device-watcher.0 2022-11-19 09:51:24.569 debug Function started: resetVars device-watcher.0 2022-11-19 09:51:24.568 debug Function started: createDataForEachAdapter device-watcher.0 2022-11-19 09:51:24.567 debug Function started: main device-watcher.0 2022-11-19 09:51:24.560 debug Created datapoints for Hmrpc device-watcher.0 2022-11-19 09:51:24.479 debug Function finished: createBlacklist device-watcher.0 2022-11-19 09:51:24.478 debug Function started: createBlacklist device-watcher.0 2022-11-19 09:51:24.476 info Number of selected adapters: 1. Loading data from: Hmrpc ... device-watcher.0 2022-11-19 09:51:24.475 debug [{"Selektor":"hm-rpc.*.UNREACH","adapterID":"hmrpc","adapter":"Homematic RPC","rssiState":".RSSI_DEVICE","rssiPeerState":".RSSI_PEER","battery":".OPERATING_VOLTAGE","reach":".UNREACH","isLowBat":".LOW_BAT","isLowBat2":".LOWBAT","stateValue":".1.STATE"}] device-watcher.0 2022-11-19 09:51:24.471 debug Adapter device-watcher was started device-watcher.0 2022-11-19 09:51:24.430 info starting. Version 2.0.2 in /opt/iobroker/node_modules/iobroker.device-watcher, node: v16.15.1, js-controller: 4.0.23 device-watcher.0 2022-11-19 09:51:23.671 debug Plugin sentry Initialize Plugin (enabled=true)
Zeile 63 sieht für mich interessant aus:
"Selektor":"hm-rpc.*.UNREACH"........
Datenpunkt:
hm-rpc.2.000E9A498DFC2D.0.UNREACH
Kann es sein das hier zwei Platzhalter fehlen?
Also wenn der erste für die Instanz ist, dann müssten doch noch die Geräte ID und dann der Kanal kommen. und anschließend die Abfrage (UNREACH).
VG
Axel -
@axel-koeneke danke für deine Informationen. Werde nachher mal versuchen das zu reproduzieren. Irgendwie…
Kannst du mir evtl noch ein screenshot von allen Datenpunkte senden von einem gerät? Die json vom datenpunkt unreach wäre auch ganz gut.Nee an den Selektor liegt das nicht. Das ist schon richtig so. Ausser du hast pro gerät zweimal den Datenpunkt unreach. Dann könnte es vielleicht ein bisschen durcheinander kommen. Hast du nur eine Instanz von hm-rpc oder mehrere?
//EDIT: Ich glaube ich konnte es etwas eingrenzen. Lässt du dir auch die HTML listen erstellen?
-
@axel-koeneke ok ich denke ich habe den Fehler gefunden und habe ein Fix eingebaut. Kannst du dann bitte mal die GitHub Version testen? Aber ich denke du wirst Irgendwo im HM-RPC Adapter ein Gerät haben wo er den Namen nicht korrekt ausgibt oder eine Datenleiche versteckt ist. Vielleicht kannst du mal schauen ob da irgendwo was auffälliges zu sehen ist.
-
@ciddi89 sagte in Test Adapter Device-Watcher v1.x.x GitHub/Latest:
nicht korrekt ausgibt oder eine Datenleiche versteckt ist
möglicherweise sonderzeichen, oder sowas?
-
@da_woody Sonderzeichen kann natürlich auch sein. Wollte mal ein Filter dafür einbauen, denke mittlerweile wird es Zeit dafür 🫣 ich vergesse immer das nicht alle wissen das es nicht gesund ist bestimmte Zeichensätze in Namen zu setzen
-
@ciddi89 sagte in Test Adapter Device-Watcher v1.x.x GitHub/Latest:
ich vergesse immer das nicht alle wissen das es nicht gesund ist bestimmte Zeichensätze in Namen zu setzen
-
@ciddi89 Huhu, was auch immer du gemacht hast, es hat funtioniert !
Super !!!
VG
Axel -
@ciddi89
Super adapter, bin ich gestern per zufall drüber gestolpert und echt begeistert, spart so viel zeitKönntest du vlt. etwas implemnetieren das man z.b. auch eigene Geräte / Strukturen verwenden kann. Also z.B. hab ich ein paar mqtt Geräte, die ich gerne mit dem Adapter auch überwachen würde.
Meine Idee wäre das man z.B. über die Adapterkonfig eigene Strukturen per json anlegen kann:meineStruktur: { Selektor: 'meineStruktur.*.rssi', adapterID: 'meineStruktur', adapter: 'meineStruktur', battery: '.battery', rssiState: '.rssi', reach: 'none', isLowBat: 'none', }
Was denkst du?
-
@scrounger wow, einer der gute dev's!
vllt kenn ich mich zu wenig aus, aber würde das nicht über sonoff funzen? -
@scrounger danke für die Blumen.
Finde deine Idee sogar sehr gut, gerade für die ganzen mqtt Geräte. Habe ja auch einige am laufen aber es gibt so viele Unterschiede. Da könnte sich der User selbst seine Exoten einpflegen.
Werde das heute Abend mal mit reinnehmen und ausprobieren. -
@ciddi89
Super, vielen Dank schon mal, das wäre ne mega Funktion!Das könnte man sogar so generisch aufbauen, dass das als Vorlage für neue Adapter genutzt werden kann und du ggf. nur noch die json struktur mergen musst und schon geht der neue Adapter - nur so ne idee
-
Hallo ciddi89
Danke für den Adapter. Aber ich habe ein Problem.
Ich bekommen nur Nachrichten bei Offline Geräten. Aber nicht wenn Batteriestand zu gering.
Habe die stabel + github Version getestet.Der Datenpunkt lowBatteryCount = 11 --> es sollte also was zum senden geben.
Ich habe den Adapter gerade mit debug log laufen und bekommen die ganze zeit folgende Meldungen:
device-watcher.0 2022-11-22 16:52:40.033 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:39.655 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:39.567 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:39.562 debug Function finished: resetVars device-watcher.0 2022-11-22 16:52:39.562 debug Function started: resetVars device-watcher.0 2022-11-22 16:52:39.562 debug Function started: createDataOfAllAdapter device-watcher.0 2022-11-22 16:52:39.561 debug Function started: main device-watcher.0 2022-11-22 16:52:39.561 debug Updating Data device-watcher.0 2022-11-22 16:52:29.560 debug Function finished: main device-watcher.0 2022-11-22 16:52:29.560 debug Created and filled data for all adapters device-watcher.0 2022-11-22 16:52:29.560 debug Function finished: createDataOfAllAdapter device-watcher.0 2022-11-22 16:52:29.559 debug Function finished: writeDatapoints device-watcher.0 2022-11-22 16:52:29.444 debug Start the function: writeDatapoints device-watcher.0 2022-11-22 16:52:29.443 debug Finished the function: sendOfflineNotifications device-watcher.0 2022-11-22 16:52:29.443 debug Start the function: sendOfflineNotifications device-watcher.0 2022-11-22 16:52:29.182 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:28.795 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:28.671 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:28.654 debug Function finished: resetVars device-watcher.0 2022-11-22 16:52:28.654 debug Function started: resetVars device-watcher.0 2022-11-22 16:52:28.653 debug Function started: createDataOfAllAdapter device-watcher.0 2022-11-22 16:52:28.653 debug Function started: main device-watcher.0 2022-11-22 16:52:28.652 debug Updating Data device-watcher.0 2022-11-22 16:52:18.651 debug Function finished: main device-watcher.0 2022-11-22 16:52:18.651 debug Created and filled data for all adapters device-watcher.0 2022-11-22 16:52:18.650 debug Function finished: createDataOfAllAdapter device-watcher.0 2022-11-22 16:52:18.650 debug Function finished: writeDatapoints device-watcher.0 2022-11-22 16:52:18.540 debug Start the function: writeDatapoints device-watcher.0 2022-11-22 16:52:18.540 debug Finished the function: sendOfflineNotifications device-watcher.0 2022-11-22 16:52:18.539 debug Start the function: sendOfflineNotifications device-watcher.0 2022-11-22 16:52:18.291 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:17.693 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } device-watcher.0 2022-11-22 16:52:17.599 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) }
Brauchst du weitere Infos?
DANKE schon mal für deine Hilfe. -
@markus_ hi danke für die Meldung. Bitte mal noch mal GitHub Version testen. sollte gefixt sein.
-
@ciddi89
DANKE für den schnellen fix.
Ich bekomme jetzt eine Benachrichtigung erhalten.Darin fehlt allerdings mein Shelly Button
https://www.shelly.cloud/knowledge-base/devices/shelly-button-1/hast du diesen schon implementiert ?
Das wäre der Datenpunkt der den Batterie Status anzeigt{ "type": "state", "common": { "name": "value", "type": "number", "role": "value.battery", "read": true, "write": false, "min": 0, "max": 100, "unit": "%" }, "native": {}, "from": "system.adapter.shelly.0", "user": "system.user.admin", "ts": 1669128127316, "_id": "shelly.0.SHBTN-1#48551902D56E#1.bat.value", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@markus_ okay test again. Sollte nun mit drin sein.
-
@ciddi89
Der shelly button wird jetzt angezeigt. DANKEnächstes Problem: Homematic-IP HmIP-KRC4.
https://homematic-ip.com/de/produkt/schluesselbundfernbedienung-4-tasten/downloads
https://de.elv.com/elv-homematic-ip-arr-bausatz-schluesselbundfernbedienung-mit-4-tasten-hmip-krc4-fuer-smart-home-und-hausautomation-152606
Das ist der Datenpunkt der Batteriespannung.{ "type": "state", "common": { "name": "XXXXX:0.OPERATING_VOLTAGE", "role": "value.voltage", "def": 0, "type": "number", "read": true, "write": false, "min": 0, "max": 25.2, "unit": "V" }, "native": { "MIN": 0, "OPERATIONS": 5, "MAX": 25.2, "FLAGS": 1, "ID": "OPERATING_VOLTAGE", "TYPE": "FLOAT", "DEFAULT": 0 }, "from": "system.adapter.hm-rega.0", "user": "system.user.admin", "ts": 1667845499723, "_id": "hm-rpc.2.0002DD8991XXX.0.OPERATING_VOLTAGE", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Anscheinend ist der max Wert des Datenpunkts falsch. Aber wer hat hier dann den Fehler gemacht? Der Programmierer des HM-RPC Adapter? Oder liegt er bei der Datenquelle also Homematic?
-
@markus_ was ist denn der wert der geliefert wird? Ist auf jeden Fall hm-rpc Fehler und dafür musst du dann ein issue anlegen auf GitHub. Den kannst du aber händisch selbst ändern. Wird aber wohl möglich bei Updates überschrieben. Es gibt aber mehrere Geräte wo der Max wert von verschiedenen Geräten/Datenpunkte nicht stimmen. Hab auch so ein Gerät, weiß garnicht mehr was das für ein Datenpunkt es war aber im Log kam dann auch immer die Meldung „32 is greater than the max value 8“ oder so ähnlich. Aber seitdem ich es selbst angepasst habe ist Ruhe.
-
@ciddi89
Danke für die Info.
Es wird hier die Spannung in Volt angezeigt.
Ich habe ein Issue auf Github aufgemachtNächstes Problem:
Ich habe die Einstellung "Nur Geräte mit Batterien auflisten" aktiv und mir werden viele Homemmatic IP Wired Geräte angezeigt. Woher weißt du ob ein Gerät eine Batterie hat? Bei mir werden sie aufgelistet obwohl sie immer mit Netzteil versorgt werden. -
@markus_ ah okay danke für die Info. Ja der Adapter guckt nach operating_voltage oder low bat Datenpunkte. Homematic Wired hatte ich noch nicht aufn Schirm somit bist du mir eine große Hilfe werde heute Abend aber n Filter einbauen der die Geräte raus nimmt. Melde mich dann noch mal