NEWS
Planung neuer Adapter: Smart Control
-
Kurzes Update / Zwischenstand:
Bin aktiv an der Entwicklung, aber wie ich halt so dazu komme, habe relativ wenig Zeit, Dauert also noch etwas
Je mehr ich entwickle, desto mehr stelle ich das große Potenzial des Adapters und dieses Konzeptes fest, also später nicht mehr nur begrenzt auf Licht/Raumsteuerung etc., sondern auch ein einfach zusammen-klickbares "If This, Then That"mit optionaler Zeitsteuerung, etc..... Mal sehen, lassen wir uns überraschenAccomplishments:
- User friendly Admin-Oberfläche steht. Hat mich viel Zeit gekostet, aber war es wert!
- Saubere input validation für die User-Angaben im Admin (z.B. ob Datenpunkte existieren, die angegebenen State-Values mit Type des Datenpunktes etc. übereinstimmen, usw.) für alle Konfig-Tabellen implementiert. Gekapselt in eine Function, daher gut skalierbar usw.
- Alles async/await und mit ES6 class, damit sauberer Code zustande kommt. Musste mich erst einarbeiten in die Thematik
- Verkettung/Abgleich der Config-Tabellen mit vielen Abhängigkeiten (in Kürze schwierig zu erklären, aber war sehr zeitintensiv)
- Vieles weitere.
Derzeitiger Entwicklungsstand: ca. 25% fertig. Jetzt fängt es an, Spaß zu machen mit den Logiken, etc.
-
Hi,
wenn du noch Ideen suchst, hier was ich mir gerade bastle:
abhängig von Tagesphase ändere ich die Werte, ob eine Lampe überhaupt angehen soll und welche Helligkeit sie haben soll. Falls ich viel Lust habe, werde ich die Farben bzw. Farbtemperaturen miteinbauen.
Außerdem baue ich in manchen Räumen ein automatischen Licht aus mit ein, je nachdem welche Tageszeit gerade ist oder ob z.b. die Luftfeuchtigkeit gestiegen ist ( also jemand duscht ).
Ich baue das aber aktuell einfach als javascript, da ich iobroker erst vor ein paar Wochen installiert habe und an einen Adapter hab ich mich noch nicht rangetraut.
Falls du Hilfe benötigst beim entwickeln könnte ich da wohl auch einiges machen.
grüße
-
und noch eins:
Wenn es einen Timer gibt, würde ich eine "Warnung" miteinbauen, also 10% der Zeit bevor es ausgeht das Licht kurz aus und wieder anmachen.
-
@Mic sagte in Planung neuer Adapter: Licht-/Raumsteuerung und mehr:
Derzeitiger Entwicklungsstand: ca. 25% fertig. Jetzt fängt es an, Spaß zu machen mit den Logiken, etc.
Wie weit bist du jetzt?
-
-
Ausblick / Konzept so weit:
Ein paar generelle Optionen:
Auslöser
Als erstes legt man Auslöser an, also Bewegungsmelder oder irgendwelche Geräte (Fensterkontakte, Wandschalter, Post im Briefkasten, etc.).
Zu schaltende Ziele
Dann legt man zu schaltende Ziele an. Auch hier beliebige Datenpunkte, und sowohl true/false als auch String möglich. Ebenso andere Datenpunkte zum ausschalten.
Bereiche
Als nächstes definiert man beliebig viele Bereiche, also z.B. Räume, Raumbereiche, oder auch nur den Briefkasten usw.
Den Bereichen ordnet man dann die Auslöser (Trigger) sowie die zu schaltenden Ziele zu, die man vorher definiert hat.
Bedingungen
Dann legt man noch ein paar Bedingungen an, also z.B. ob jemand anwesend, ob gerade Feiertag, die Eingangstüre offen, usw.
Schedule
Zum Schluss gehts zum "Schedule", also zur Planung, wann was geschaltet wird. Natürlich inklusive Astrozeiten, usw. Geschaltet wird dann auch nur, wenn die eingestellten Bedingungen zutreffen, z.B. "mindestens eine Person ist anwesend", oder "heute ist Feiertag".
Ebenso kann man Ausschlusskriterien auswählen, also wann nie geschaltet wird.Zukunftsplanung, die es ggf. nicht in die erste Test-Version schaffen wird:
Als Auslöser nicht nur Bewegungsmelder, Wandschalter, Fensterkontakte etc. ermöglichen, sondern auch ein Zeiteintritt. Also z.B. (erste Spalte noch ein beliebiger Auslöser-Name, fehlt hier im Screenshot).
Löst dann auch diverse Scripts wie zur Weihnachtsbeleuchtung usw. ab. Auch diese Auslöser werden dann beliebigen Bereichen und Schedules zugeordnet, damit man das alles individuell und einfach konfigurieren kann. -
Für die very, very, extremely early testers ist hier das Repo auf Github, hat soweit schon alles drin wie oben beschrieben, nur diverse Logiken noch nicht!!
Ich entwickle auch stetig weiter, und es wird hier noch Fehler geben, Errors im Log usw.
WARNUNG: also bitte nur in Testumgebung und mit Vorsicht. Das ist kein Aufruf zum testen, der folgt noch, sobald die erste Testversion fertig gestellt.
Die Errors etc. braucht ihr mir bitte nicht mitteilen, ich bin ja selber noch dabei -
@Mic Das war mit Abstand die eindringlichste Warnung vorm Testen die ich hier je gelesen habe.
-
@Chaot
Haha
Tatsächlich sehe ich zu, dass ich bei der Entwicklung möglichst viele Fehler abfange, die User machen könnten bei Dateneingabe, also States die nicht existieren usw., sonst werde ich nicht mehr froh beim Support
Und vor allem auch, dass der ioBroker nicht irgend wann Nachts abschmiert, nur weil man ein Sonderzeichen im State oder in der Zeitangabe hat, usw., z.B. das wird schon beim Speichern der Admin-Konfig gleich geprüft.
Die Vorsicht deshalb tatsächlich, weil der Adapter auf diverse fremde States zugreift, und schaltet wie er meint dass "Schedule" zutrifft, dass könnte theoretisch schon bei einer Endlosschleife zu lustigen Effekten führen
Aber bitte keine Angst, ich berücksichtige das alles im Code und prüfe alles usw. bevor was ausgeführt wird.
Durchgehend async/await, solide Eingabevalidierungen usw. stellen das soweit sicher. -
@Mic Das sieht schon sehr vielversprechend aus
Testen werde ich den Adapter auf jeden Fall, nur noch nicht in dem frühen Status -
@FredF sagte in Planung neuer Adapter: Smart Control:
Testen werde ich den Adapter auf jeden Fall, nur noch nicht in dem frühen Status
Dito, warte auch noch.
-
Auch ich finde das ein sehr spannendes Projekt und werde es definitiv testen wenn es in die "erweiterte" Testphase geht.
Eine Frage vorab: Ich hab einen Hue-BM der das Licht und das Radio (über ein Java Script) einschaltet. Leider spricht der BM auch ab und zu auf den Saugroboter (Roborock) an.
Sehe ich es richtig dass ich auch den Saugroboter als Trigger nehmen könnte und dann so konfigurieren dass wenn der Roboter in gewissen Zonen aktiv ist, das Licht und das Radio im Bad nicht angehen?Vielen Dank
-
@Mic Wau, der Adapter ersetzt damit ja mindestens 30 Scripte und mehr.. !
-
Jepp, der Adapter macht schon im Anfangsstadium einen sehr guten Eindruck
Werde ihn definitiv testen.
Ich schlage schonmal eine neue Kategorie vor, in die man ihn einordnen könnte:ELWMS
(Eierlegende Wollmilchsau) -
@Urs sagte in Planung neuer Adapter: Smart Control:
Eine Frage vorab: Ich hab einen Hue-BM der das Licht und das Radio (über ein Java Script) einschaltet. Leider spricht der BM auch ab und zu auf den Saugroboter (Roborock) an.
Sehe ich es richtig dass ich auch den Saugroboter als Trigger nehmen könnte und dann so konfigurieren dass wenn der Roboter in gewissen Zonen aktiv ist, das Licht und das Radio im Bad nicht angehen?Saugroboter als Trigger funktioniert so nicht bzw. ergibt keinen Sinn für diesen Adapter. Trigger ist ein Auslöser.
Stattdessen willst du ja einen Bewegungsmelder, der Trigger ist, nicht schalten, falls eine Bedingung zutrifft, also z.B. "Saugroboter ist grad aktiv", oder "Saugroboter ist im Flur aktiv". Wenn du diese Info in einem Datenpunkt verfügbar hast, dann kannst du dies(e) unter "Conditions" aufnehmen und in der Tabelle "Schedule" als "Never if" auswählen. -
Sorry, Trigger war etwas blöd gewählt, ich meinte es ganau so wie du schreibst. Für Saugroboter Aktiv gibt es den DP "Status". Der kann zwar verschiedene Status wie cleaning, zone Cleaning, spot Cleaning usw. einnehmen wenn er läuft aber das sollte mit verschiedenen Conditions lösbar sein.
Mit dem Standort kämpfe ich noch, hab bisher keine DP welche was Sinnvolles in die Richtung raus geben gefunden. Ist aber nicht so tragisch, dann bleibt der BM halt aus bis Robo nach Hause geht...im Normalfall rennt er ja eh durch die Hütte wenn niemand da ist.Cool, freu mich schon drauf.
Vielen Dank.
-
@Mic
Was du hier bereits präsentiert hast ist ja der Wahnsinn
Für mich ist es unvorstellbar was hier alles im Hintergrund programmiert werden muss. Bin schon sehr gespannt wie es mit deinem Adapter weitergeht.Zum Adapter selber kann ich dir leider keine Unterstützung anbieten. Wenn du aber für die ersten Test nicht nur Fortgeschrittene User benötigst, würde ich als Anfänger gerne auch einmal paar Tests machen.
Bis jetzt bin ich sowieso „nur“ am testen wie / was funktioniert. Habe also noch nichts was wirklich in Betrieb ist.Betreibe den ioBroker mit einem Raspberry Pi 4 und einem Conbee II Stick sofern das eine Rolle spielt.
Wünsche noch viel Spass beim Entwickeln.
Und natürlich danke -
@Mic
Hab mal installiert, im log kommen nach dem ersten Start gleich ein paar Fehler:smartcontrol.0 2020-06-20 22:32:24.444 error (19092) Adapter admin configuration validation failed --> Please check your configuration. You will not be able to use this adapter without fixing the issues. smartcontrol.0 2020-06-20 22:32:24.443 error at async SmartControl._asyncOnReady (/opt/iobroker/node_modules/iobroker.smartcontrol/main.js:143:17) smartcontrol.0 2020-06-20 22:32:24.443 error at processTicksAndRejections (internal/process/task_queues.js:97:5) smartcontrol.0 2020-06-20 22:32:24.443 error at Library.asyncVerifyConfig (/opt/iobroker/node_modules/iobroker.smartcontrol/lib/smartcontrol.js:546:75) smartcontrol.0 2020-06-20 22:32:24.443 error at SmartControl.getForeignObjectAsync (/opt/iobroker/node_modules/iobroker.js-controller/lib/tools.js:1584:16) smartcontrol.0 2020-06-20 22:32:24.443 error at new Promise (<anonymous>) smartcontrol.0 2020-06-20 22:32:24.443 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/tools.js:1585:16 smartcontrol.0 2020-06-20 22:32:24.443 error at SmartControl.getForeignObject (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2854:17) smartcontrol.0 2020-06-20 22:32:24.443 error at validateId (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:482:19) smartcontrol.0 2020-06-20 22:32:24.443 error (19092) [asyncVerifyConfig] : The id is empty! Please provide a valid id., stack: Error: The id is empty! Please provide a valid id.
Liegt das vielleicht an den Beispielen, welche IDs bei mir nicht vorhanden sind?
Deutsch/Englisch scheint noch nicht komplett implementiert zu sein, ist auch nicht schlimm, aber wenn man auf Deutsch klickt öffnet sich die Adapterseite als eigenständige neue Seite, das ist ungünstig. Da das linke Menü weg ist. Schreib bitte Deutsch statt German, weil German finde ich unlogisch.
Ach ja, hatte leider keine Zeit mehr um mir mehr anzusehen. Aber es ist und bleibt extremst vielversprechend.
-
Danke euch allen für euer Feedback
@SSenn sagte in Planung neuer Adapter: Smart Control:
Zum Adapter selber kann ich dir leider keine Unterstützung anbieten. Wenn du aber für die ersten Test nicht nur Fortgeschrittene User benötigst, würde ich als Anfänger gerne auch einmal paar Tests machen.
Bis jetzt bin ich sowieso „nur“ am testen wie / was funktioniert. Habe also noch nichts was wirklich in Betrieb ist.Jeder Tester ist willkommen, egal ob absoluter Anfänger oder Vollprofi
Erste Testversion wird alsbald veröffentlicht, mehr dazu dann hier im Thread.@e-s sagte in Planung neuer Adapter: Smart Control:
Hab mal installiert
Danke für den sehr frühzeitigen Test
Wohl diesen, und einige andere Fehler, habe ich mittlerweile behoben. Ich veröffentliche die Tage eine offizielle Testversion (ist dann 0.1.0) und schreibe hier dann rein.@e-s sagte in Planung neuer Adapter: Smart Control:
Deutsch/Englisch scheint noch nicht komplett implementiert zu sein, ist auch nicht schlimm, aber wenn man auf Deutsch klickt öffnet sich die Adapterseite als eigenständige neue Seite, das ist ungünstig. Da das linke Menü weg ist. Schreib bitte Deutsch statt German, weil German finde ich unlogisch.
Guter Hinweis, das stammt von copy/paste eines anderen Adapters von mir.
Tatsächlich werde ich jetzt mal gar keine Anleitung auf Github erstellen, stattdessen diese in den Adapter-Optionen direkt einbauen. Damit hat man bei der Benutzung keinen Medienbruch, und ich kann zur Übersetzung gulp benutzen
@Alle
Habe nun auch als Trigger für Schaltungen node-schedule implementiert, und mit Astrozeiten, usw. D.h. es können auch als Auslöser bestimmte Zeitpunkte definiert werden, wie "jeden Mo-Fr um 7:00, außer es ist keiner anwesend", usw.Erste Testversion folgt sehr bald.
-
@Mic sagte in Planung neuer Adapter: Smart Control:
Erste Testversion folgt sehr bald.
Ich kann es gar nicht erwarten.
Edit:
Habe es jetzt doch getestet:Installation ohne Probleme, Code 0
smartcontrol.0 2020-06-22 14:29:23.399 error (11240) Adapter admin configuration validation failed --> Please check your configuration. You will not be able to use this adapter without fixing the issues. smartcontrol.0 2020-06-22 14:29:23.399 warn (11240) [Config Verification] 1 error(s) found while verifying your adapter configuration. smartcontrol.0 2020-06-22 14:29:23.398 warn (11240) [Config Table 'Schedules'] No rows defined. smartcontrol.0 2020-06-22 14:29:23.356 info (11240) starting. Version 0.0.3 in C:/Program Files/iobroker/Test/node_modules/iobroker.smartcontrol, node: v12.18.0, js-controller: 3.1.6 smartcontrol.0 2020-06-22 14:29:19.650 info (54720) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason smartcontrol.0 2020-06-22 14:29:19.650 info (54720) terminating smartcontrol.0 2020-06-22 14:29:19.649 error (54720) Error while stopping adapter: TypeError: Cannot read property 'cancel' of null smartcontrol.0 2020-06-22 14:29:19.649 info (54720) (0) trigger schedules cancelled... smartcontrol.0 2020-06-22 14:29:19.648 info (54720) Got terminate signal TERMINATE_YOURSELF smartcontrol.0 2020-06-22 14:28:15.139 error (54720) Adapter admin configuration validation failed --> Please check your configuration. You will not be able to use this adapter without fixing the issues. smartcontrol.0 2020-06-22 14:28:15.139 warn (54720) [Config Verification] 1 error(s) found while verifying your adapter configuration. smartcontrol.0 2020-06-22 14:28:15.139 warn (54720) [Config Table 'Schedules'] No rows defined. smartcontrol.0 2020-06-22 14:28:15.087 info (54720) starting. Version 0.0.3 in C:/Program Files/iobroker/Test/node_modules/iobroker.smartcontrol, node: v12.18.0, js-controller: 3.1.6 smartcontrol.0 2020-06-22 14:28:11.270 info (50608) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason smartcontrol.0 2020-06-22 14:28:11.270 info (50608) terminating smartcontrol.0 2020-06-22 14:28:11.269 error (50608) Error while stopping adapter: TypeError: Cannot read property 'cancel' of null smartcontrol.0 2020-06-22 14:28:11.269 info (50608) (0) trigger schedules cancelled... smartcontrol.0 2020-06-22 14:28:11.268 info (50608) Got terminate signal TERMINATE_YOURSELF
Beim Schedules kann ich Additional Conditions + Never if nicht löschen oder auswählen.