NEWS
Script oder Blocky für Objektabfragung gesucht
-
Moin,
ich habe an einem Wemos nun mehrere schalter am laufen.
Diese werden über ESP Easy als Switch abgefragt und ausgegeben mit 0 oder 1.
Diese habe ich dann über MQTT in IObroker eingefügt und erscheinen nun auch dort.
In mein View möchte ich nun auf der Hauptseite ein kleines "Licht" haben.
Das mir sagt , wenn es leuchtet, etwas ist auf oder offen. Dieses kleine Licht soll erstmal als übersicht dienen, wenn ich auf das dementsprechende View gehe sehe ich dann was auf oder an ist.
Ich dachte an ein Script, welches meine Schalter abfragt und wenn nur ein Schalter auf "True" oder 0 oder 1 ist , dann auch das Script eine 1 schreibt und dieses kann ich ja dann in mein View einbinden.
Die Ordnerstruktur z.Z. ist
mqtt.0\Schalter\
\Fenster\Schalter1
\Fenster\Schalter2
\Türen\Schalter3
\Türen\Schalter4
Oder gibt es sogar andere lösungen?
Wie könnte so ein Script/Blocky aussehen.
Habt ihr evl ansätze für mich das ich das mal Versuchen kann!?
Besten dank und Gruß
Patrick
-
Die Ordnerstruktur z.Z. ist `
Ordnerstrukturen von Objekten in ioBroker werden durch einen Punkt in der ID erzeugt (nicht durch ).
@Ace-k:Habt ihr evl ansätze für mich das ich das mal Versuchen kann!? `
Dafür verwendet man den https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#–-selector. -
besten dank und Entschuldige.
Habe den Wemos eben nochmal für "umbauten" abgenommen.
Da ich nun leider wirklich keine Ahnung von Script habe… habe ich das ganze mal in Blocky versucht.
Sollte doch so passen oder? Zumindest wird ein wert "true" (weil jemand zuhause ist) angezeigt.
nur das hier jetzt mal Ping gewählt wurde um auszugeben ob jemand da ist.
später eigentlich dann nur oben "zustand erzeugen" ändern in zb OFFEN
und als IDs dann die Schalter am wemos wählen. Richtig?
2562_444.jpg -
Sollte doch so passen oder? `
Das Prinzip passt: Auf alle zu überwachenden Datenpunkte bei "wurde geändert" triggern und eine Oder-Verknüpfung aller Werte. Sind sehr viele Datenpunkte so zu überwachen, wird es aber aufwändig. -
das Mag sein. Momentan klappt das mit den beiden….
das "konstrukt" mit dem Wemos wird noch etwas anspruch in arbeit nehmen.
aber evtl mach ich mich gleich mal an einen Blocky aufbau
-
Hier ein Beispiel, wie man beliebig viele Datenpunkte mit einem bestimmten Teil der ID abfragen kann.
// Sammelmeldung mittels Selector erzeugen const debug = true; // nach erfolgreichem Test auf false setzen ! const schalter = $('*.Schalter*'); // alle Datenpunkte, die ".Schalter" in ID enthalten const idSammel = 'Schalter.Sammelmeldung'; if(debug) { // prüfen, ob der Selektor stimmt schalter.each(function(id, i) { log(id); // zeigt alle Datenpunkt-IDs des Selektors }); } function alle() { schalter.each(function(id, i) { if(getState(id).val) return true; }); // alle getestet return false; // alle Werte false oder 0 } createState(idSammel, alle(), {type: 'boolean'}); schalter.on(function(dp) { if(dp.state.val) { setState(idSammel, true, true); } else { // Trigger-Datenpunkt hat Wert false oder 0 setState(idSammel, alle(), true); } });
-
schaut interessant aus.
muss ich dann mal testen.
versteh ich richtig? er Fragt damit alle Datenpunkte ab, die das Wort "schalter" beinhalten!?
d.h. ich muss nix erweitern und es läuft immer so weiter, ich muss nur wenn ich welche hinzufüge diese auch mit Schalter benennen.
bei Blocky könnte man es vergessen den neuen Daenpunkt hinzuzufügen….
genail . danke