NEWS
Aktoren vom Lightmanager Air schalten - Tipp gesucht
-
Ich verwende einen Lightmanager Air von jbmedia. Um die Geräte dort zu schalten, kann ich einen HTTP Befehl absetzen, pro Gerät sind es (mindestens) 3 unterschiedliche HTTP Befehle (on/off/toggle). Die IP-Adresse ist immer die selbe, die Daten nach der IP unterscheiden dann zwischen den Geräten sowie zwischen on/off/toggle. Bei aktuell 50 Geräten sind das 150 unterschiedliche HTTP Befehle.
Auch gibt es dort sogenannte "Marker" welche mit den true/false States im ioBroker verglichen werden können. Diese kann ich schon erfolgreich mit einem blockly Script auslesen und ich ioBroker taugliche true/false Werte schreiben. Das heißt ich hab den aktuellen on/off Status meiner Aktoren.Nun zum eigentlichen Problem bei welchem ich einen Lösungsansatz suche:
Ich möchte per VIS diese Aktoren schalten und die Zustände jeweils korrekt anzeigen lassen.Meine Idee war folgende aber ich schaff es nicht diese Umzusetzen:
Ich würde gerne einen Schalter in der VIS integrieren, welcher mir Anhand der via Blockly aktualisierten true/false states den Status anzeigt.
Bei Klick auf den Schalter soll dann aber nicht nur dieser Datenpunkt geändert werden, sondern beim Ausschalten sowie Einschalten jeweils ein unterschiedlicher HTTP Befehl abgesetzt werden, um die Aktoren zu schalten.Was ich versucht hab ist anhand der true/false Objekte (welche ja alle 3 Sek aktualisiert werden) via Blockly Skript zu triggern und jeweils den korrekten HTTP Befehl abzuschicken. Hat nicht funktioniert, da die Lampe alle 3 Sek an/aus geschalten wird. Da war zwar sicher noch irgendwo ein Fehler drinn, aber das ist auch nicht die beste Lösung, da ich dann für alle 50 Geräte ein Skript erstellen müsste, was einen erheblichen Aufwand bedeutet, wenn da Geräte hinzu kommen oder welche aussortiert werden.
Diese 150 Datenpunkte welche für die HTTP Befehle benötigt werden sind in einer XML gespeichert, und können sicher irgendwie mit einem Skript (mit eurer Hilfe) in einem Objektbaum importiert werden. (Aber dazu kommt dann die Frage, wenn ich soweit bin.)
Das würde aber (laut meinem aktuellen Wissensstand) nur dann Sinn machen, wenn ich zusätzliche Daten des VIS-Schalters an das Blockly Übergeben kann, um nach dem korrekten Datenpunkt des benötigten HTTP Befehls zu "suchen".Viel Text, aber so könnt ihr mir, einem blutjungen Anfänger, hoffentlich besser helfen.
Danke schonmal -
@rtwl sagte in Aktoren vom Lightmanager Air schalten - Tipp gesucht:
Was ich versucht hab ist anhand der true/false Objekte (welche ja alle 3 Sek aktualisiert werden) via Blockly Skript zu triggern und jeweils den korrekten HTTP Befehl abzuschicken. Hat nicht funktioniert, da die Lampe alle 3 Sek an/aus geschalten wird. Da war zwar sicher noch irgendwo ein Fehler drinn, aber das ist auch nicht die beste Lösung, da ich dann für alle 50 Geräte ein Skript erstellen müsste, was einen erheblichen Aufwand bedeutet, wenn da Geräte hinzu kommen oder welche aussortiert werden.
Da gibt es eine elegante Möglichkeit. Diese setzt voraus das aus der ID des Datenpunktes im Blockly der zu sendende HTML Befehl erzeugt werden kann.
Alternativ kannst du eine Tabelle definieren die für die einzelnen Datenpunkte die HTML Befehle speichert.
Dann musst du nur noch einen einzigen Trigger bauen, den du entweder mit einem Selektor oder von Hand mit den 50 states füllst.
Im Trigger kannst du dann die ObjektID und den State des auslösenden Triggers für die Aktion nutzen:
Wichtig: die Bausteine
object ID
undstate value
sind der gleiche Baustein (links im Trigger Bereich zu sehen) mit unterschiedlichen Einstellungen. Die beinhalten zum einen den Wert des States der den Trigger ausgelöst hat bzw. die Objekt ID des States der den Trigger ausgelöst hat.Was in der Funktion steht hängt davon ab
- wie deine Datenpunkte aussehen
- ob man daraus direkt das html machen kann
-
@asgothian
Vielen Dank für deine Antwort.
Ich bin leider noch nicht so ganz fit mit ioBroker und den ganzen Möglichkeiten.Hier mal eine kurze Erklärung was ich alles von dem Lightmanager an Daten bekomme, und was ich aktuell versucht hab. Vielleicht hast du damit eine spezifische Antwort/Lösung für mich.
.
Den Status der Lampen bekomme ich in folgendem Format, welche ich mir (wie erwähnt) schon als true/false Werte per Blockly alle 3 Sek importiere:{ "marker state": "0000010011100000000010000000010000000000000000000000000000011000" }
Dieser Status der Lampen wird dann auch direkt im HTTP Request zum schalten der Lampen geändert.
Die config.xml sieht (in Kurzform) so aus:
Vermutlich kommt bald ein Thread von mir wie ich diese in folgender Form in ioBroker als Objekte importieren/aktualisieren kann. Diese hier hab ich mir als Test manuell angelegt und so denke ich wäre es auch am Besten um die HTTP Befehle "zusammenzubasteln":
Um das ganze via Skript steuern zu können, hab ich mir diese beiden Objekte angelegt um sie via VIS zu ändern und daraus via Blockly den Request zusammenzusetzen:
Im Blockly nimm ich als Trigger das Objekt "aktor". Was auch super funktioniert.
Mein Hauptproblem ist aktuell das Ändern/Aktualisieren der beiden Objekte "aktor" sowie "befehl" via VIS. Leider gibt es einfach kein Widget welches ich nutzen kann um den "aktor" bei Klick identisch zu lassen, den "befehl" aber pro klick auf on/off zu wechseln.
Auch ist dabei das Problem, dass die States (true/false) nur alle 3 Sek aktualisiert werden (und das ist eventuell schon eine etwas zu kurze Zeitspanne) um den Status "live" pro Klick auf der VIS zu visualisieren. Dazu aber mehr hier in diesem Thread: https://forum.iobroker.net/topic/52843/welches-vis-widget-um-zwei-drei-datenpunkte-zu-setzen?_=1646161662617Ja, das ist mein aktueller Stand bei der halb nativen Integration vom Lightmanager in ioBroker.
Vielleicht hast du, oder jemand anderes noch eine Idee.
Vielen Dank schonmal -
@rtwl sagte in Aktoren vom Lightmanager Air schalten - Tipp gesucht:
Auch gibt es dort sogenannte "Marker" welche mit den true/false States im ioBroker verglichen werden können. Diese kann ich schon erfolgreich mit einem blockly Script auslesen und ich ioBroker taugliche true/false Werte schreiben. Das heißt ich hab den aktuellen on/off Status meiner Aktoren.
Hallo rtwl,
ich bin vor ein paar Tagen neu mit iobroker angefangen
und nutze zu Hause auch den Lightmanager von jbmedia.
Mein erstes Ziel ist ein "smarten Wecker" mit einem rp4 inkl. Touchdisplay zu bauen.Ich bekomme grad das Auslesen der http://192.168.xxx.xxx/params.json nicht hin.
Könntest du mir evtl. bitte dein blockly zeigen, wie du die einzelnen Marker aus dem String für einen iobroker Datenpunkt separierst?Schöne Grüße
netzkeks -
Hej netzkeks,
gerne stelle ich dir mein Blockly Skript zur Verfügung.
Damit das Skript funktioniert, muss man zuerst alle gewünschten Marker als Objekt anlegen und zwar unter
0_userdata.0.Marker
mit dem Namenmarker1
bismarker64
oder eben nur jene die man benötigt. wie in meinem Beispiel nur diese 4.
Hast du schon einen anderen Pfad für deine Marker, musst du im Blockly den Pfad ändernSo sieht das Blockly aus:
Der Zeitplan ist bei mir auf "jede Minute" gestellt. Du kannst dort das Intervall der Abfrage ändern.
-
@rtwl sagte in Aktoren vom Lightmanager Air schalten - Tipp gesucht:
gerne stelle ich dir mein Blockly Skript zur Verfügung.
Super funktioniert!
Vielen Dank für das Bereitstellen deines Skripts.False/true wird bei den unterschiedlichen "markerxx" richtig gesetzt.
Bei dem "marker" steht bei dir der ganze String, bei mir nur "null"
Woran liegt das? Ist das wichtig?
Ist der Zustandstyp (liste) beim "marker" bzw. (logikwert) bei "markerxx" entscheidend? -
@netzkeks sagte in Aktoren vom Lightmanager Air schalten - Tipp gesucht:
Woran liegt das? Ist das wichtig?
das war noch eine Altlast für das Erstellen des Skript damals. Du kannst ''marker'' löschen. Hab ich auch gerade.