NEWS
Zigbee-Geräte überwachen
-
@amg_666 Da die alle ja Anscheinend die gleiche Zeit haben, kann es sein das dann die Instanz oder ioBroker neugestartet wurde? Das würde dann natürlich die Zeit erklären denke ich. Wüßte aber nicht auf Anhieb ob beim Neustart die Zeit sich aktualisiert. Könnte ich mir aber vorstellen.
-
@ciddi89 das lässt sich ja einfach überprüfen, ich mach mal nen Neustart. Danke für den Hinweis.
Yep, das war der Grund, nach Adapterneustart sind die Timestamps auf "Adapterstartzeit" gesetzt.
Und weil ich grade den Alpha-Test für js-controller 4.0 mache hatte ich gestern iobroker wegen Update gestoppt und neu gestartet. Daher waren alle "offline Geräte" auf der gleichen Zeit. -
@amg_666 ok dann wissen wir das ja schon mal
-
Wow, da hat sich heute ja einiges getan! Unglaublich! Scheinbar hab ich da echt einen Punkt getroffen, an dem Bedarf besteht!
Und ja, was das KnowHow anbelangt, bin ich echt erst am Anfang! Echt spannend wie ihr Profils das löst! Bis auf euer Level hab ich noch einiges vor mir!
Nachdem ich einiges davon worüber die letzten Stunden hier beratschlagt wurde, nicht verstehe und das erst mal nachvollziehen und ausprobieren muss, würde zuviel Zeit vergehen, wenn ich das am Laufen halte.
Das Thema mit den Räumen hat ja - wenn ich das richtig verstehe - @paul53 gelöst und es wurde schon übernommen. Super Sache!!
@ciddi89 wenn es für dich okay, ist, machen wir deine Version zur "offiziellen/aktuellsten" Version. Du kannst das einfach schneller und kompetenter aktualisieren als ich.
Wenn du daraus einen Adapter machst, freue ich mich und stelle mich als Beta-Tester zur Verfügung! Freut mich dass ich den Grundstein dazu legen durfte. Mit @liv-in-sky hast du ja schon Unterstützung!
So sehr ich ein paar Minuten motiviert war, muss ich gestehen, dass sowas bei weitem noch nicht meine Kragenweite ist. Momentan reichen das KnowHow, die Zeit und erst recht nicht der WAF für sowas aus.
-
Ich habe mir aktuell eine Helper-Klasse geschrieben, die enums/Aufzählungen auswertet. Dieses Script macht sich Recht gut (muss noch angepasst werden). Ist es in Ordnung, wenn ich mir das Script nehme, bei mir einbaue und auch eventuell veröffentliche?
-
@frana120500
Daran habe ich auch schon gedacht aber ich habs noch nicht angepackt.Vorübergehend habe ich es mit einem Blockly gelöst, das mir 2x pro Woche den aktuellen Status per Telegram und als Notifikation in Jarvis übermittelt - einfach den kompletten JSON-String.
Vielleicht kommt da ja was mit dem Adapter!
Die erste Frage die ich mir diesbezüglich gestellt habe, wie oft eine Benachrichtigung kommen soll. Jede Stunde eine Nachricht ist einfach zu viel.
Ansonsten hätte ich geplant, alle 24 Stunden eine "Statusnachricht" zu generieren, wenn mindestens ein Gerät in der Offline-Liste ist.
Bei den Batterien würde ich die Liste aufsteigend (nach Batteriezustand sortieren) und 1-2x pro Woche die schwächsten 3 Geräte als Statusnachricht schicken. Wie es eben im Moment das Blockly macht.
Klingt für die Profis einfach, für mich sind das ein paar Wochen Entwicklungszeit!
-
@deralff
Also meinerseits auf alle Fälle!Diese Erweiterung bitte gleich mit @ciddi89 abstimmen! Das übersteigt jetzt meinen Horizont bei weitem!
-
@johannesa hahaha jetzt übertreibe mal nicht ich habe einfach nur gerade die Zeit mich damit zu beschäftigen. Aber ja klar kannst du das machen. Ist ja dein Script was durch Hilfe ein bisschen optimiert worden ist
Falls es zum Adapter kommen sollte könnte man das mit dem Abfrageintervall ja gleich berücksichtigen und den Adapter als schedule Adapter einstellen. Da kann dann jeder seine eigene Zeit angeben wann er die Daten holen soll.
-
@deralff wird dein script auch andere devices wie zigbee integriert haben ?
-
@ciddi89
Wenn du es ganz ehrlich wissen willst: ich hab ein paar Tage vor Weihnachten angefangen, dieses Problem anzugehen. Erst mit Blockly und dann - weil gescheitert - mit Javascript. Jetzt ist Februar.Vielen Dank dass ich dir das "aktuell halten" umhängen darf. hab den Code in meinem ersten Post ausgeblendet und auf deinen verwiesen.
Eventuell packe ich die Idee von @frana120500 mal an. Das beschäftigt mich dann wieder ein paar Wochen
-
Das neue Script in #1 erzeugt einen Error.
Vielleicht nochmal prüfen.Edit:
Die Original-Version hat einen Error.
Die Version von @ciddi89 läuft. -
@johannesa ist doch alles gut jeder fängt ja an. Bin ja auch noch am Anfang. Auch wenn ich bisschen was weiß aber da steckt soviel verbesserungspotential drin. Da liegt mir html und CSS bisschen besser und mit Js habe ich immer nur das nötigste gemacht. Ärgere mich ein bisschen das ich mich damit nicht schon früher mehr beschäftigt habe. Und man muss ja auch wirklich die Zeit und Geduld haben sich damit zu beschäftigen.
Ja du hättest das auch ruhig in deinen ersten Post kopieren können. Damit finden das andere schneller.
-
@bahnuhr sagte in Zigbee-Geräte überwachen:
Die Original-Version hat einen Error.
Welchen denn? Poste mal log
-
@amg_666 sagte in Zigbee-Geräte überwachen:
@bahnuhr sagte in Zigbee-Geräte überwachen:
Die Original-Version hat einen Error.
Welchen denn? Poste mal log
Hab es schon wieder gelöscht und die Version von @ciddi89 genommen.
Es war etwas mit enumroom[0]
(oder so ähnlich) -
Okidoki - ist erledigt. Habs mal bei mir oben aktualisiert - falls da jemand sucht!
Für heute reicht es erstmal - mir raucht ganz schön der Kopf. Aber es macht Spaß. Und die iobroker-Community ist unglaublich cool.
-
@liv-in-sky ja, alles was in enum/Aufzählungen augelistet ist.
Besteht da interesse? Ich denke, damit kann man ganz viel machenZuerst habe ich mir jetzt meinen Helper so zusammen gezimmert, dass er mir zurückgeben kann, welche devices denn zugeordnet sind. Das hat den Vorteil, dass bei einem Austausch von einem Gerät, selbes nur in das enum gezogen werden muss. Am Javascript code an sich muss nichts geändert werden
Und das Script aus diesem Thread ist eine perfekte Aufgabe zum Implementieren
Wird, wenn fertig, natürlich öffentlich zugänglich sein.
-
bitte mehr erklärung
müssen geräte in irgendwelchen enums sein, damit dein script dann die devices anzeigt ?
-
Hallo,
vielen Dank für das Skript.
Weiß jemand was ich tun muss, um für jedes Gerät einen Datenpunkt (true: online, false: offline) anzulegen? -
@liv-in-sky ja genau. Das ist ein einziges Mal Arbeit, danach ist ein Austausch eines Gerätes aber um Welten einfacher und schneller.
Sagen wir mal, du hast eine Lampe die in 5 verschiedenen Skripten geschaltet wird. Wenn nun die Lampe das Zeitliche segnet, dann muss in allen Skripten die neue Lampe eingefügt werden.
Hast du das mit enums gelöst, dann musst du nur die Lampe im enum austauschen und fertig. Das wäre ein Mal die alte Lampe löschen und die neue per drag and drop in den passenden Raum ziehen ️
Ich schaue Mal, dass ich die Tage das Script bzw. Die Helper-Klasse hochlade.
-
@deralff sagte in Zigbee-Geräte überwachen:
Sagen wir mal, du hast eine Lampe die in 5 verschiedenen Skripten geschaltet wird. Wenn nun die Lampe das Zeitliche segnet, dann muss in allen Skripten die neue Lampe eingefügt werden.
dafür hat man alias
ist für mich nichts in so einem script - ich denke, da sind zuviele enums zu machen - du musst ja nicht nur ein enum für den room machen, sondern auch irgendwie definieren, wie z.b der battery wert gelesen wird - kann ja auch nur low_bat geben oder ist es ein quality link oder ein anderer wert, den du liest (z.b. sonoff hat keinen quality dp). entweder machst du das auch über enums oder du definiert es im script - ich mache das lieber an einen ort (im script)
ABER
du hast natürlich recht -ist eine klasse idee und werd ich mir sicher anschauen und wie du das alles realisieren wirst , interessiert mich sehr - leider bin ich selbst etwas pflege-faul und vergesse immer wieder die geräte zb. einen raum zuzuteilen
ich habe mir mittlerweile auch die mqtt und fritzdect geräte eingebunden
das was ich im script hier mache:
const myArrDev=[{"theSelektor":"zigbee.0.*.link_quality","theName":"common","linkQual":"zigbee","batt":"zigbee"}, {"theSelektor":"sonoff.1.*.Wifi_RSSI","theName":"dp","thedpName":"Hostname","linkQual":"rssi","batt":"none"}, {"theSelektor":"fritzdect.*.*.present","theName":"common","linkQual":"none","batt":""}, {"theSelektor":"mqtt.0.xiaomiantenna.*.status","theName":"Objectname2Level","linkQual":"none","batt":"none"}, {"theSelektor":"mqtt.0.xiaomiantenna.sensors.sensor.*_batt.state","theName":"Objectname1Level","linkQual":"none","batt":"dpvalue"}, ]
muss ja auch in deinem script gemacht werden - entweder über enum(functions) oder auch im script