NEWS
AbstraktionsSchicht
-
Herzliches Hallo!
Da ich neu hier bin und foren-unerfahren, ersuche ich um Nachsicht und Hinweise bezüglich möglicher formaler Vergehen.
Nach einiger Recherche habe ich mich für ioBroker (Debian, VM, ProxMox, IntelNUC, cc2531) entschieden, ohne dass ich andere Hausautomationssysteme probiert hätte.
Meine ersten Erfahrungen nach ein / zwei Wochen sind, dass mit dem UI einfache, "lineare", device-bezogene Abläufe gut umsetzbar sind. Es ist ein System von Programmierern für Programmierer.
Interessant wird es für mich jetzt da, wo die Online-Lösungen aufzuhören scheinen.Wenn es aber darum geht, mittels Scripts Device-IDs, Funktionen oder Zugriffe zentral zu verwalten, dann trifft man auf Beschränkungen, etwa mit der Common-Struktur oder der API-Reichweite. Man ist wohl am besten beraten, statt Blockly einfach ein großes JS manuell zu erstellen, um alles bei einander zu haben. So weit war ich bis jetzt allerdings noch nicht.
Derzeit ist es auch so, wenn ein Device getauscht werden muss, dann muss der User es neu pairen, dann in allen betroffenen Scripts die IDs tauschen. Das kann einem End-User, dem ich das System bereitstelle, nicht zugemutet werden. Man könnte ein Common-JS erstellen, dass eine Zuordnungsliste in Node-Einträgen schreibt / liest, weil es ja nicht zentral angesprochen, sondern vervielfältigt wird.
Ich möchte in ioBroker eine Abstraktionsschicht einbauen, die zwischen Nodes, Instances, Devices und UI, API vermittelt.
Nun weiß ich nicht, wie ich mit beispielsweise einer extern erstellten Web-Oberfläche über die API auf mein JS zugreifen kann. Ich könnte einen Node-Eintrag setzen, der triggert ein Script, das schreibt einen weiteren Eintrag, den ich verzögert von der Web-UI abfrage. Ich suche einen Workaround zum Workaround.
Ich bin kein GNU-Linux-Native, daher weiß ich auch nicht und konnte nicht herausfinden, wie ich den implementierten Web-Server nützen könnte.Auch habe ich kaum Referenzen gefunden, wie man alle Devices oder IPs abfragen könnte, um sie in einer Schleife weiter zu behandeln.
Wofür die Zwischenschicht?
Um virtuelle Devices anlegen zu können, die mit den HW-Device-IDs verbunden sind. Fällt ein HW-Device aus, könnte das neue für das freigewordene virtuelle Gerät in der Maske gematcht werden. Neue Devices sollen anhand populärer Parameter (oder Eigenschaften aus dem ZigBee-Devices-File) einer Geräte-Type zugewiesen werden. ZB brightness deutet auf Leuchtmittel hin.
Ich möchte einen wahlfreien Location-Baum erstellen für Häuser, Etagen, Räume, Bereiche, ...
Ich möchte eine Liste von Personen erstellen, denen Precence-Devices zugeordnet werden können.
Ich möchte die Kriterien miteinander kombinieren und alle Lichter im Wohnzimmer schalten können.
Ich möchte mehrere Settings über die Oberfläche festlegen. Dh ich erstelle ein neues "Abend" wähle die Einstellungen und speichere. Dieses Szenario kann ich manuell aufrufen oder per Sensor-Bedingungen.Wie hänge ich meine noch zu programmierende Oberfläche am besten ins System? Interner Web-Server? API an JS? Und wie spreche ich die Nodes an, um Devices-Listen abzufragen?
Im Moment geht leider gar nichts - nachdem der cc2531 plötzlich nicht mehr ansprechbar war und dessen Reset startet ioBroker nicht mehr. Vermutlich liegt dies aber an zu wenig zugewiesenem RAM. Eine gute Gelegenheit, mit Eurer Unterstützung neu zu beginnen.
Danke einstweilen!
-
@microsystem sagte:
wenn ein Device getauscht werden muss, dann muss der User es neu pairen, dann in allen betroffenen Scripts die IDs tauschen.
Das kann mit dem Adapter ioBroker.linkeddevices umgangen werden.
-
@paul53 Vielen Dank, kannte ich noch nicht, bin noch am Erforschen. Jedenfalls ein Stück weniger zu programmieren...
-
Ich hoffe, ich bin nicht zu früh mit meiner nochmaligen Nachfrage. Ist das Thema zu komplex, das deutsche Forum zu klein bzw eher für Endnutzer gedacht? Oder soll ich noch ein wenig zuwarten? Ist es illegitim, wenn ich mich parallel nochmals ans englische Forum wende?
-
@microsystem sagte in AbstraktionsSchicht:
Ich hoffe, ich bin nicht zu früh mit meiner nochmaligen Nachfrage.
Nein keines wegs, aber so richtig Klar ist mir nicht was du willst.
@microsystem sagte in AbstraktionsSchicht:
das deutsche Forum zu klein
Der war gut, 20k+ User sind angemeldet, davon 90% aus dem Deutssprachigen raum.
@microsystem sagte in AbstraktionsSchicht:
Ist es illegitim, wenn ich mich parallel nochmals ans englische Forum wende?
Nein ist es nicht, aber die Entwickler sprechen fast alle Deutsch und im Englischen Forum ist wenig los. Für Entwickler gibt es eine Kategorie, wobei die Frage ist auf welcher Ebene du dein Vorhaben Umsetzen möchtest. Endanwender oder doch Entwickler?
-
@microsystem ich verstehe nicht wo du hin willst..
wazu möchtest du iobroker einsetzten und "von wo" möchtest du iobroker steuern ??
mein Tipp: lesen lesen lesen.. es wird dann klarer.. oder du baust dir ein DEV system auf wo du sachen ausprobieren kannst...
ansonsten: komm abends mal ins TS da kann man solche sachen bequatschen .. vielleicht liegts es ja nur an dem kelinen Aha moment
-
@Jey-Cee Vielen Dank, dann bin ich hier genau richtig!
-
@arteck Ich versuche es nochmals auf den Punkt zu bringen. Ziel ist ein von mir programmiertes Web-UI
Das soll mich erstens von der stark hardware-basierten ioBroker-Oberfläche abheben. Der Tipp von paul53 bezüglich ioBroker.linkeddevices führt bereits in die richtige Richtung. Da gibt es aber noch diverse zu restriktive Konzepte.
Dazu muss ich entweder in den implementierten Web-Server oder (fast lieber, weil unabhängig) von außen über die API zugreifen. Bei letzterer habe ich nicht gefunden, wie ich direkt mit einem eigenen JS kommunizieren kann. Ein eigenes JS würde ich benötigen, weil das NodeJS-Konzept mit der "hinkenden" Common-Regelung für mich nicht modular genug ist.
Weil ich sowohl von der abstrahierten eigenen Oberfläche, als auch bei der Geschäftslogik stets möglichst offen konzipiere, möchte ich keine Node-Punkte direkt ansprechen, sondern anfänglich gleich mal die Device-Listen einlesen, um sie nach eigener Logik weiterzuverarbeiten. Auch da finde ich keine schlüssige Doku.
Um den Kreis zu schließen: wie komme ich zu einem eigenen Web-UI, dass sich über die Restriktionen erhebt?
Ich habe jetzt kurz Urlaub und möchte so viel machen und aufbauen. Ich habe einfach nicht Zeit oder Geld, mich spielerisch einzuabeiten. Andererseits möchte ich aber kein kommerzielles System aus nachvollziehbaren Gründen.
Ich mag kleine Aha-Momente. TS ist TeamSpeak? Hab mich noch nie damit beschäftigt. Gibt doch eh einen Matrix-Channel, aber der ist wohl nicht so populär...
-
@Jey-Cee Apropos, im Matrix-Channel lurken 2 Leut rum, ansonsten Windstille.
-
@microsystem sagte in AbstraktionsSchicht:
Was ist denn TS?
Team Speak
https://forum.iobroker.net/topic/20196/sprachchat-teamspeak-für-smart-homesysteme
-
@sigi234 Danke. Habs grad gecheckt. Da proprietär und eher in Spielerkreisen, ist TS bislang völlig an mir vorbeigegangen. Habe Web, Email, Matrix. Möchte nicht Facebook, TS, Telegram und diverse proprietäre Plattformen parallel nützen, bei denen ich die Datenhoheit nicht habe. Kann man in TS die Kommunikation halbwegs vernünftig zwecks Dokumentation exportieren?
-
@Jey-Cee Sorry für die vielen Posts, meine Gedanken kommen in Einzelteilen.
Bislang war ich Endanwender. Das wäre die minimalinvasivste Methode etwas umzusetzen, sofern es das vorgegebene System erlaubt.
Habe natürlich auch an einen Adapter gedacht. Aber da müsste ich erst mal ein Versioning-System installieren und mich in die entsprechenden Entwickler-Community-Gepflogenheiten einarbeiten. Und ich vermute auch, dass Entwickler-Geschichten noch weniger dokumentiert sind, als Anwender-Methoden.
Entscheidungskriterium ist für mich die Zeit-Ersparnis. -
Vielleicht noch ein möglicher Ansatz zur Steuerung: Ich finde MQTT als Kommunikationsprotokoll genial. Ich habe mir in ioBroker einen eigenen Tree für Wohnung/Stockwerke/Zimmer/Gewerke gebaut und die States mit der Visualisierung verbunden. Über MQTT sind diese Datenpunkte dann mit anderen Devices (entweder innerhalb von ioBroker oder externe Systeme) synchronisiert. Das ist auch eine Abstraktionsschicht, die ich mir gebaut habe, damit ich z.B. Hue-Bewegungsmelder, HomeMatic-Bewegungsmelder oder selbstgebaute über eine einheitliche Schnittstelle ansprechen kann.
Möglicherweise ist da für dich auch ein passender Impuls dabei...