NEWS
[Neuer Adapter] smartstate
-
Aktuelle Test Version 0.0.1 Veröffentlichungsdatum 24.01.2023 Github Link https://github.com/ChriD/ioBroker.smartstate Hi.
Habe einen neuen Adapter erstellt um states anhand von anderen states zu erstellen. Meine Intention war das ich states haben wollte welche mir z.B. die Anzahl der eingeschalteten Lichter repräsentiert bzw. ob ein Licht einer Gruppe eingeschalten ist.
Ich weiß das es dazu ein 'script' gibt welches dies z.B. schon macht, aber dazu muss man Räume usw. definieren. Das wollte ich nicht und ich wollte es übersichtlich in einem Adapter haben. Vll. ist er ja für jemanden nützlich. (Einen adapter der schon so etwas , macht habe ich nicht gefunden)Wäre über Tester und Rückmeldungen bzw. Verbesserungsvorschläge sehr erfreut.
Installation derzeit nur über Github.
Beschreibung siehe https://github.com/ChriD/ioBroker.smartstate
Aufnahme in stable repo erfolgt später.Danke & LG
Christian -
@chrid Meinst du z.B. das Lichterzählen Script ?
-
@chrid sagte in [Neuer Adapter] smartstate:
War schnell eingerichtet ... ich wollte damit meine ZigBee Geräte zählen welche nicht verbunden sind,
Pattern istzigbee.*.*.available
Da der Datenpunkt
true
ist wenn das Gerät verbunden ist habe ich so natürlich nur alle verbundenen Geräte gezählt.
Pfft wie würde ich denn allefalse
Werte zusammenzählen?
-
-
@bananajoe
Danke für die Rückmeldung!
Im Hintergrund habe ich grundsätzlich dafür schon eine Funktion eingebaut dass man den Rückgabewert des oder der states (pattern) anpassen kann. D.h du würdest dann in der Pattern Zeile noch ein Feld haben wo du dann einfach "value = !value" reinschreiben könntest. Das ist halt aber wirklich ein Feld wo man im Endeffekt validen javascript code reinschreiben müsste.Oder hättest du eine Idee wie man das schöner bzw. Userfreundlicher lösen könnte?
-
Hab das Feld eingeblendet. Wenn du das neu vom github installierst kannst du dort dann
return !value eingeben. Dann werden die true in false und die false in true umgewandelt bevor sie in der Berechnung benutzt werden -
@chrid super, der Adapter funktioniert hier einwandfrei. Dankeschoen!
-
@chrid sagte in [Neuer Adapter] smartstate:
Das ist halt aber wirklich ein Feld wo man im Endeffekt validen javascript code reinschreiben müsste.
- funktioniert einwandfrei - Danke
- Ein mächtiges Schwert mit dem JavaScript-Code. Damit könnte man ja auch Umwandlungen usw. machen
Eine Anmerkung zum Feld Pfad; - Was ich da Eintrage erscheint als Name am Datenpunkt, richtig? Wäre dann nicht Name: ein besserer Begriff?
-
@bananajoe said in [Neuer Adapter] smartstate:
Eine Anmerkung zum Feld Pfad; - Was ich da Eintrage erscheint als Name am Datenpunkt, richtig? Wäre dann nicht Name: ein besserer Begriff?
Also eigentlich sollte der "Pfad" Eintrag eine Hilfe zur Erstellung einer Substruktur in der Objektliste sein.
Kann auch "mehrstufig" sein. (licht.zaehler)
Aber da sehe ich gerade das bei Mehrstufigkeit noch ein kleines Problem ist und er ein bisschen zuviel "Ordner" anlegt.Wäre "Name" dafür der gebräuchliche Begriff hier? Mir ist halt nichts besseres als Pfad eingefallen. Vll. "Struktur"?
Und "Name" gibt es eigentlich schon in den Einstellungen -
Öhm, man hat doch schon die (Objekt-)ID
Und Pfad sollte dann was? Davor noch einmal einen Unterordner anlegen? -
@bananajoe
Ja so habe ich mir das gedacht. Denn die ObjektId generiert sich ja grundsätzlich automatisch aus dem Namen. Und wenn ich jetzt den State/ObjektId strukturiert in einem Unterordner haben will müsste ich die Objekt-Id abändern auf "unterordner.objektid". So könnte ich das auch lösen und den Pfad dann weglassen, mit extra Setting für den Pfad geht er aber nicht verloren wenn du die ObjektId neu aus dem Namen berechnen lässt und ich dachte mir das wäre angenehmer zum bedienen -
Aber ich sehe das richtig das ich nur die Anzahl der z.B. offenen Fenster, eingeschalteten Lichter oder was auch immer sehe und nicht welche genau, oder?
-
@wendy2702
Ja, das war grundsätzlich das Ziel des Adapters. Der geht nur auf den Wert der Statis. Aber wenn der Wunsch besteht das umzusetzen kann ich mir das mal ansehen. Ich wüsste jetzt nur nicht wie man das in den Settings einstellen und wie das aussehen sollte -
@wendy2702 sagte in [Neuer Adapter] smartstate:
Aber ich sehe das richtig das ich nur die Anzahl der z.B. offenen Fenster, eingeschalteten Lichter oder was auch immer sehe und nicht welche genau, oder?
Du kannst die Anzahl der offenen und geschlossenen Fenster sehen. Und ob alle zu oder noch ein oder mehr offen (als true/false).
@ChriD ein weiterer Datenpunkt der einen dann eine Liste erstellt mit allen offenen oder geschlossenen Fenster wäre was. Ich würde ja als JSON bevorzugen. Das könnte per Widget flexibel in der VIS anzeigen lassen oder in eigenen Skripten weiterverarbeiten.
Die Frage ist das dann dann noch alles in diese Liste soll. Die Objekt-Id, der Name des Gerätes? -
Hi,
um beim Fenster/Licht Beispiel zu bleiben.
Angabe was z.B. offen/zu an/aus... oder was auch immer ist wuerde aus meiner Sicht schon sinn machen. Alleine die Anzahl der Geraete nutzt mir persoenlich nicht soviel. Muss ja dann doch wieder noch woanders gucken welche es sind.
-
@wendy2702
Hab's mir als isue im guthub hinzugefügt. Werde ich in den nächsten Tagen umsetzen.
Es wird vmtl. ein Häkchen am State geben welcher angibt ob die Statusinfos zur Berechnung in einem Eignen Objekt landen sollen. Die ID dafür wird vom Smartstate autom. abgeleitet.
Wie ich den Inhalt befülle bin ich mir noch nicht sicher. Vll. auch mit einer vom User auswählbaren Option (JSON State Object, JSON State Array, JSON Id Array, Id String (Strichpunktgetrennt)).Oder habt ihr da noch Ideen? Genügt ein JSON Array mit den states?
-
@chrid Hört sich gut an.
Danke!
-
Hi der Adapter funktioniert gut, aber wenn du noch den Namen ausgeben könntest, wäre das super.
Wie Wendy2702 schon sagte, man muss ja wissen, welche Fenster/Türen offen oder welche Devices offline sind, oder was man auch immer damit zählen mag.. -
@ilovegym @wendy2702 @BananaJoe
Es gibt jetzt eine neue Version git & npm. Bitte bei Gelegenheit mal schauen ob ihr damit zurecht kommt. Beschreibung zur neuen Funktionalität gibts hier:
https://github.com/ChriD/ioBroker.smartstate#using-the-state-info-type -
2023-02-07 19:22:36.514 - error: smartstate.0 (1886549) uncaught exception: id is not defined 2023-02-07 19:22:36.518 - error: smartstate.0 (1886549) ReferenceError: id is not defined at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.smartstate/main.js:568:2) at Module._compile (node:internal/modules/cjs/loader:1165:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10) at Module.load (node:internal/modules/cjs/loader:1043:32) at Function.Module._load (node:internal/modules/cjs/loader:878:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:22:47 2023-02-07 19:22:36.519 - error: smartstate.0 (1886549) id is not defined 2023-02-07 19:22:37.022 - warn: smartstate.0 (1886549) Terminated (UNCAUGHT_EXCEPTION): Without reason 2023-02-07 19:22:38.793 - warn: smartstate.0 (1886549) Unable to increase LUA script timeout: Connection is closed. 2023-02-07 19:22:39.071 - error: host.iobroker instance system.adapter.smartstate.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2023-02-07 19:22:39.071 - info: host.iobroker Restart adapter system.adapter.smartstate.0 because enabled 2023-02-07 19:22:48.824 - info: admin.2 (1701438) ==> Connected system.user.admin from 192.168.1.32 2023-02-07 19:23:09.381 - info: host.iobroker instance system.adapter.smartstate.0 started with pid 1887274 2023-02-07 19:23:10.598 - error: smartstate.0 (1887274) uncaught exception: id is not defined 2023-02-07 19:23:10.601 - error: smartstate.0 (1887274) ReferenceError: id is not defined at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.smartstate/main.js:568:2) at Module._compile (node:internal/modules/cjs/loader:1165:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10) at Module.load (node:internal/modules/cjs/loader:1043:32) at Function.Module._load (node:internal/modules/cjs/loader:878:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:22:47 2023-02-07 19:23:10.602 - error: smartstate.0 (1887274) id is not defined 2023-02-07 19:23:11.110 - warn: smartstate.0 (1887274) Terminated (UNCAUGHT_EXCEPTION): Without reason 2023-02-07 19:23:11.775 - error: smartstate.0 (1887274) uncaught exception: Connection is closed. 2023-02-07 19:23:11.777 - error: smartstate.0 (1887274) Error: Connection is closed. at close (/opt/iobroker/node_modules/ioredis/built/redis/event_handler.js:184:25) at Socket.<anonymous> (/opt/iobroker/node_modules/ioredis/built/redis/event_handler.js:151:20) at Object.onceWrapper (node:events:628:26) at Socket.emit (node:events:513:28) at TCP.<anonymous> (node:net:301:12) 2023-02-07 19:23:11.781 - error: smartstate.0 (1887274) Connection is closed. 2023-02-07 19:23:12.261 - error: host.iobroker instance system.adapter.smartstate.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2023-02-07 19:23:12.263 - info: host.iobroker Restart adapter system.adapter.smartstate.0 because enabled 2023-02-07 19:23:42.528 - info: host.iobroker instance system.adapter.smartstate.0 started with pid 1887422 2023-02-07 19:23:43.517 - error: smartstate.0 (1887422) uncaught exception: id is not defined 2023-02-07 19:23:43.519 - error: smartstate.0 (1887422) ReferenceError: id is not defined at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.smartstate/main.js:568:2) at Module._compile (node:internal/modules/cjs/loader:1165:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10) at Module.load (node:internal/modules/cjs/loader:1043:32) at Function.Module._load (node:internal/modules/cjs/loader:878:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:22:47 2023-02-07 19:23:43.520 - error: smartstate.0 (1887422) id is not defined 2023-02-07 19:23:44.022 - warn: smartstate.0 (1887422) Terminated (UNCAUGHT_EXCEPTION): Without reason 2023-02-07 19:23:44.716 - error: host.iobroker instance system.adapter.smartstate.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2023-02-07 19:23:44.717 - info: host.iobroker Restart adapter system.adapter.smartstate.0 because enabled 2023-02-07 19:23:44.717 - warn: host.iobroker Do not restart adapter system.adapter.smartstate.0 because restart loop detected