NEWS
Yahka Siemens Logo Jalousie
-
Hallo Zusammnen,
Habe jetzt Yahka für mich entdeckt und finde die kombination mit iobroker super.
So kann ich alle Geräte Zentral Verbinden und von einem Gerät mit einer App steuern.Habe mein ganzes Licht eingefügt mit hilfe von der Alias funktion.
Da hat mich folgender Beitrag weiter gebracht:Jetzt würde ich auch gerne meine Jalousie in Yahka bekommen.
Miene Jalousien laufen über LOGO 8 und dem S7 Adapter. Habe für meine Jalousie 3 Netzwerkeingänge (Buttons) die ich ansteuern kann.AUF; AB und Sonnenschutz
Bei betätigung des jeweiligen Buttons fährt das Programm in der LOGO Zeit X ab.
Eine Rückmeldung kriege ich über den UDF Baustein als WORD. 1=ZU 2=Sonnenschutz 3=Offen
Dieser Word Wert ist ebenfalls im S7 Adapter vorhanden.Habe viel im forum gesehn dass Leute ihre Jalousien von 0-100% fahren können, das wäre natürlich ein Traum, aber so wie es jetzt ist, reicht es mir aus.
Vielen Dank
-
@karlson-0 sagte: (Buttons) die ich ansteuern kann. AUF; AB und Sonnenschutz
Rückmeldung kriege ich über den UDF Baustein als WORD. 1=ZU 2=Sonnenschutz 3=OffenVorschlag (nicht getestet):
const idStatus = '...'; const idAuf = '...'; const idAb = '...'; const idSonne = '...'; on({id: idStatus, change: 'ne', ack: false}, function(dp) { if(dp.state.val == 1) setState(idAb, true); else if(dp.state.val == 2) setState(idSonne, true); else if(dp.state.val == 3) setState(idAuf, true); });
-
Vielen Dank für die Antwort, habe es gerade eingefügt.
// Original-Datenpunkt, der zu schreibende, der Taster const idStatus = 's7.0.DBs.DB1.U002_1'; const idAuf = 's7.0.DBs.DB1.NI9'; const idAb = 's7.0.DBs.DB1.NI7'; const idSonne = 's7.0.DBs.DB1.NI8'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt, der zu lesende, der shellly // Bei Nicht-Verwendung Leerstring '' zuweisen on({id: idStatus, change: 'ne', ack: false}, function(dp) { if(dp.state.val == 0) setState(idAb, true); else if(dp.state.val == 1) setState(idSonne, true); else if(dp.state.val == 2) setState(idAuf, true); }); // Name des neuen Alias-Datenpunkt const idAlias = 'Jal Test'; //Name des Alias nameAlias = 'Jal Test'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; desc = 'per Script erstellt'; // Folgende befehle auskommentieren, wenn keine Änderung der Eigenschaft erforderlich // typeAlias = 'boolean'; // oder 'number' // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch write = "val ? true : true"; //wichtig bei Tastern // role = 'value'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen // unit = '%'; // nur für Zahlen // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein) // custom = []; // verhindert doppelte Ausführung von history, ... // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten ! // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten ! // Ab hier nichts ändern !! function createAlias(idDst, idSrc, idRd) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = 'state'; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; if(typeAlias) obj.common.type = typeAlias; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; if(nameAlias) obj.common.name = nameAlias; if(role) obj.common.role = role; if(desc) obj.common.desc = desc; if(obj.common.type == 'number') { if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; } else { if(obj.common.min !== undefined) delete obj.common.min; if(obj.common.max !== undefined) delete obj.common.max; if(obj.common.unit) delete obj.common.unit; } if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj, function() { if(idRd) setState(idRd, getState(idRd).val, true); else setState(idSrc, getState(idSrc).val, true); }); if(raum && existsObject('enum.rooms.' + raum)) { let obj = getObject('enum.rooms.' + raum) obj.common.members.push(idDst); setObject('enum.rooms.' + raum, obj); } if(gewerk && existsObject('enum.functions.' + gewerk)) { let obj = getObject('enum.functions.' + gewerk) obj.common.members.push(idDst); setObject('enum.functions.' + gewerk, obj); } } } createAlias('alias.0.' + idAlias, idStatus, idAuf, idAb, idSonne);
So sieht das ganze Script jetzt aus, habe diesen Alias probiert bei Yahka einzufügen, aber da tat sich leider bei der bedineung nichts.
Habe es unter Position state eingefügt.Irgendetwas mache ich doch falsch, weil warum kann man bei Yahka unter Jalousie so viele Punkte einfügen ?
Noch ein kleiner Nachtrag von mir:
Habe den WORD Wert falsch definiert: Offen= 2 Sonnenschutz=1 Geschlossen=0
Habe es aber schon im script richtig geschriben (denke ich zumindest) -
@karlson-0 sagte: habe diesen Alias probiert bei Yahka einzufügen
Weshalb einen Alias? Das Skript soll dafür sorgen, dass die Jalousie über den Status-Datenpunkt "s7.0.DBs.DB1.U002_1" bedient werden kann.
Von Yahka habe ich keine Ahnung. -
Hallo Karlson,
wie weit bist du mit einer Rollladensteuerung.
Stehe gerade auch vor dem Problem und suche eine LösungGruß