NEWS
Yahka Konfiguration für Garagentor mit Licht
-
Ich möchte Dir schon gerne helfen. Ich finde es aber etwas bescheiden, wenn ich Fragen zur Fehlereingrenzung stelle und Du auf diese einfach nicht antwortest bzw. sie ignorierst.
<u>Also:</u>
1. Poste mal bitte einen Screenshot Deiner yahka Konfiguration.
2. "Mein" Skript geht von gewissen Grundvoraussetzungen aus. Treffen die bei Dir auch zu?
-
Mein Tor hat nur einen Taster (kurzer Impuls für 1sec) für hoch und runter. (true für 1sec, danach wieder false)
-
D.b. z.B. Tor offen, Tast-Aktor ansteuern -> Tor geht zu, Tast-Aktor erneut an steuern -> Tor stoppt, Tast-Aktor erneut an steuern -> Tor fährt wieder zu, ….
<u>Skript V1.1</u>
Ich habe das Skript noch mal aktualisiert. Der Sensor-Status bei Tor geschlossen ist nun per Variable einstellbar. Also in Deinem Falle Vossi80 musst Du SensorStatusTor_geschlossen = true setzen.
! ````
// Skript zum Steuern eines Garagentores mit Homekit und per Taster
//
// Voraussetzung:
// Das Tor hat nur einen Taster (kurzer Impuls für 1sec) für hoch und runten. (true für 1sec, danach wieder false)
// D.b. z.B. Tor offen, Tast-Aktor ansteuern -> Tor geht zu, Tast-Aktor erneut an steuern -> Tor stoppt, Tast-Aktor erneut an steuern -> Tor fährt wieder zu, …
//
// ChangeLog:
// V1.1 (28.03.2018): Status des Sensors bei Garagentor geschlossen kann nun per Variable definiert werden.
! //Die folgenden Variablen müssen an die eigene Umgebung angepasst werden.
var Schalter = 'hm-rpc.0.BidCoS-RF.8.PRESS_SHORT',
Sensor = 'hm-rpc.0.KEQ0905365.1.STATE',
SensorStatusTor_geschlossen = false; // Status des Aktors wenn das Tor geschlossen ist
///var schalteGaragentor = 'javascript.0.virtualDevices.Garagentor.schalteGaragentor_HK',
LageGaragentor = 'javascript.0.virtualDevices.Garagentor.LageGaragentor_HK',
TimeoutHKSetzen = 5000,
timeout;! createState(LageGaragentor, {
type: 'number',
name: 'Lage des Garagentors (HK)',
min: 0,
max: 1,
def: 1,
role: 'value'
});
! createState(schalteGaragentor, {
type: 'number',
name: 'Schalte das Garagentor (HK)',
min: 0,
max: 1,
def: 1,
role: 'value'
});
! // Folgender Abschnitt sorgt für die korrekte Darstellung in HK beim Schalten
on({id: Schalter, change: "ne"}, function (obj) {
var value = obj.state.val;var StatusSchalter = value, StatusSchalteGaragentor = getState(schalteGaragentor).val; if (StatusSchalteGaragentor === 1) { // Tor geschlossen if (StatusSchalter === true) { // Öffne das Tor setState(schalteGaragentor , 0); } } else if (StatusSchalteGaragentor === 0) { // Tor offen if (StatusSchalter === true) { // Schließe das Tor setState(schalteGaragentor, 1); // Tor wird geschlossen } }
});
! // Folgender Abschnitt sorgt für die Steuerung des Homematic-Aktors aus HK heraus
on({id: schalteGaragentor, change: "ne"}, function (obj) {
var value = obj.state.val;var StatusLageGaragentor = value, StatusSchalteGaragentor = getState(schalteGaragentor).val; if (StatusLageGaragentor === 1) { // Tor geschlossen if (StatusSchalteGaragentor === 0) { // Öffne das Tor setState(Schalter, true); } } else if (StatusLageGaragentor === 0) { // Tor offen if (StatusSchalteGaragentor === 1) { // Schließe das Tor setState(Schalter, true); } }
});
! // Bei einer manuellen Öffnen/Schließen des Garagentors, muss die Anzeige in Homekit wieder korrekt gesetzt werden.
on({id: Sensor, change: "ne"}, function (obj) {
var value = obj.state.val;var StatusSensor = value; timeout = setTimeout(function () { if (StatusSensor === SensorStatusTor_geschlossen) { // Definiere Tor für HK als geschlossen setState(LageGaragentor, 1); setState(schalteGaragentor, 1); } else { // Definiere Tor für HK als offen setState(LageGaragentor, 0); setState(schalteGaragentor, 0); } }, TimeoutHKSetzen);
});
-
-
Hey eumats…. sorry wenn ich was übersehen habe, selbstverständlich bin ich dankbar für deine Hilfe.
Zu 1:
Zu 2.
Deine Voraussetzungen treffen eigentlich zu. Auch mein Taster gibt kurzen Impuls (schaltet 1 sec auf true) und Tor bewegt sich. Das einzige was nicht zutrifft ist das Verhalten beim Drücken des Taster. Bei mir siehts so aus:
1x drücken…Tor fährt hoch
nochmal drücken Tor stoppt....
nochmal drücken Tor fährt "wieder runter"
glaub aber nicht das das was zu sagen hat oder?
Habe dein neues Script jetzt verwendet und die Variable für mich geändert, doch leider kein Erfolg
-
Das einzige was nicht zutrifft ist das Verhalten beim Drücken des Taster. Bei mir siehts so aus:
1x drücken…Tor fährt hoch
nochmal drücken Tor stoppt....
nochmal drücken Tor fährt "wieder runter"
glaub aber nicht das das was zu sagen hat oder? `
Öhm. Das von Dir beschriebene Verhalten entspricht doch 1zu1 meiner Beschreibung, oder?!Geht Dein Taster nach der 1sec auch wieder auf false?
Wenn Du das Tor per Taster hochfährst zeigt dann HomeKit geöffnet? Bzw. zeigt HomeKit geschlossen bei Tor zu?
-
Das einzige was nicht zutrifft ist das Verhalten beim Drücken des Taster. Bei mir siehts so aus:
1x drücken…Tor fährt hoch
nochmal drücken Tor stoppt....
nochmal drücken Tor fährt "wieder runter"
glaub aber nicht das das was zu sagen hat oder? `
Öhm. Das von Dir beschriebene Verhalten entspricht doch 1zu1 meiner Beschreibung, oder?!Geht Dein Taster nach der 1sec auch wieder auf false?
Wenn Du das Tor per Taster hochfährst zeigt dann HomeKit geöffnet? Bzw. zeigt HomeKit geschlossen bei Tor zu? `
Bei mir fährt es nach dem stoppen in die andere Richtung und bei dir fährt es nach dem stoppen weiter oder hab ich das falsch gelesen??
In HK tut sich nichts wenn ich das Tor manuel fahre auch bleibt bei den Datenpunkten immer die 1 dahinter…
6387_bildschirmfoto_2018-03-28_um_21.48.55.png -
Geht Dein Taster nach der 1sec auch wieder auf false? `
? -
Geht Dein Taster nach der 1sec auch wieder auf false?
?
Mist… ich glaube da liegt der Fehler.... also wenn ich drücke ändert sich da nichts allerdings kann ich das wie auf den Foto auch nicht sehen....
6387_bildschirmfoto_2018-03-28_um_22.05.10.png -
In HK tut sich nichts wenn ich das Tor manuel fahre auch bleibt bei den Datenpunkten immer die 1 dahinter… `
Irgendetwas scheint da generell faul zu sein. Ich habe in mein Skript mal Log Ausgaben eingefügt. Bitte mal die Log-Ausgaben posten.! ````
// Skript zum Steuern eines Garagentores mit Homekit und per Taster
//
// Voraussetzung:
// Das Tor hat nur einen Taster (kurzer Impuls für 1sec) für hoch und runten. (true für 1sec, danach wieder false)
// D.b. z.B. Tor offen, Tast-Aktor ansteuern -> Tor geht zu, Tast-Aktor erneut an steuern -> Tor stoppt, Tast-Aktor erneut an steuern -> Tor fährt wieder zu, …
//
// ChangeLog:
// V1.1 (28.03.2018): Status des Sensors bei Garagentor geschlossen kann nun per Variable definiert werden.
! //Die folgenden Variablen müssen an die eigene Umgebung angepasst werden.
var Schalter = 'hm-rpc.0.BidCoS-RF.8.PRESS_SHORT',
Sensor = 'hm-rpc.0.KEQ0905365.1.STATE',
SensorStatusTor_geschlossen = false; // Status des Aktors wenn das Tor geschlossen ist
///var schalteGaragentor = 'javascript.0.virtualDevices.Garagentor.schalteGaragentor_HK',
LageGaragentor = 'javascript.0.virtualDevices.Garagentor.LageGaragentor_HK',
TimeoutHKSetzen = 5000,
timeout;! createState(LageGaragentor, {
type: 'number',
name: 'Lage des Garagentors (HK)',
min: 0,
max: 1,
def: 1,
role: 'value'
});
! createState(schalteGaragentor, {
type: 'number',
name: 'Schalte das Garagentor (HK)',
min: 0,
max: 1,
def: 1,
role: 'value'
});
! // Folgender Abschnitt sorgt für die korrekte Darstellung in HK beim Schalten
on({id: Schalter, change: "ne"}, function (obj) {
var value = obj.state.val;var StatusSchalter = value, StatusSchalteGaragentor = getState(schalteGaragentor).val; console.log('Taster wurde betätigt.'); if (StatusSchalteGaragentor === 1) { // Tor geschlossen if (StatusSchalter === true) { // Öffne das Tor console.log('Taster wurde betätigt: Setze HK auf "wird geöffnet..."'); setState(schalteGaragentor , 0); } } else if (StatusSchalteGaragentor === 0) { // Tor offen if (StatusSchalter === true) { // Schließe das Tor console.log('Taster wurde betätigt: Setze HK auf "wird geschlossen..."'); setState(schalteGaragentor, 1); // Tor wird geschlossen } }
});
! // Folgender Abschnitt sorgt für die Steuerung des Homematic-Aktors aus HK heraus
on({id: schalteGaragentor, change: "ne"}, function (obj) {
var value = obj.state.val;
var StatusLageGaragentor = value,
StatusSchalteGaragentor = getState(schalteGaragentor).val;console.log('schalteGaragentor (HK)'); if (StatusLageGaragentor === 1) { // Tor geschlossen if (StatusSchalteGaragentor === 0) { // Öffne das Tor console.log('schalteGaragentor (HK): Tor wird geöffnet'); setState(Schalter, true); } } else if (StatusLageGaragentor === 0) { // Tor offen if (StatusSchalteGaragentor === 1) { // Schließe das Tor console.log('schalteGaragentor (HK): Tor wird geschlossen'); setState(Schalter, true); } }
});
! // Bei einer manuellen Öffnen/Schließen des Garagentors, muss die Anzeige in Homekit wieder korrekt gesetzt werden.
on({id: Sensor, change: "ne"}, function (obj) {
var value = obj.state.val;
var StatusSensor = value;console.log('Manuelle Tor Betätigung (Sensor).'); timeout = setTimeout(function () { if (StatusSensor === SensorStatusTor_geschlossen) { console.log('Manuelle Tor Betätigung (Sensor): Setze Tor in HK als geschlossen.'); // Definiere Tor für HK als geschlossen setState(LageGaragentor, 1); setState(schalteGaragentor, 1); } else { console.log('Manuelle Tor Betätigung (Sensor): Setze Tor in HK als offen.'); // Definiere Tor für HK als offen setState(LageGaragentor, 0); setState(schalteGaragentor, 0); } }, TimeoutHKSetzen);
});
-
undefined2018-03-28 22:15:07.014 - info: javascript.0 script.js.Intern.garagetest22: schalteGaragentor (HK) 2018-03-28 22:15:27.932 - info: javascript.0 script.js.Intern.garagetest22: schalteGaragentor (HK) 2018-03-28 22:15:43.346 - info: javascript.0 script.js.Intern.garagetest22: schalteGaragentor (HK) 2018-03-28 22:15:46.287 - info: javascript.0 script.js.Intern.garagetest22: schalteGaragentor (HK)
Bei jedem drücken im HK kommt das…..
-
Öffne und schließe mal manuell das Tor und poste die Log Ausgaben…
-
Öffne und schließe mal manuell das Tor und poste die Log Ausgaben… `
Es wird bei manuellen öffnen/schließen nichts im Log geschrieben
-
Dann wird der Status vom Sensor nicht aktualisiert. Ändert sich denn der Wert des Sensors bei Tor offen und Tor geschossen?
-
NACHTRAG:
Und Du hast im Skript wirklich die Variablen Schalter und Sensor durch Deine eigenen Sensoren ersetzt? Denn bei manueller Betätigung des Tors sollten mindesten die Ausgaben "Taster wurde betätigt." und "Manuelle Tor Betätigung (Sensor)." im Log erscheinen.
Schalter = 'hm-rpc.0.BidCoS-RF.8.PRESS_SHORT',
Sensor = 'hm-rpc.0.KEQ0905365.1.STATE',
Am besten Du geht mal einen Schritt zurück und schaust mal was Dein Sensor und der Tast-Aktor in iobroker machen. Erst wenn die korrekt funktionieren macht es Sinn bei der Homekitanbindung / bei dem Skript weiter zu schauen…
-
NACHTRAG:
Und Du hast im Skript wirklich die Variablen Schalter und Sensor durch Deine eigenen Sensoren ersetzt? Denn bei manueller Betätigung des Tors sollten mindesten die Ausgaben "Taster wurde betätigt." und "Manuelle Tor Betätigung (Sensor)." im Log erscheinen.
Schalter = 'hm-rpc.0.BidCoS-RF.8.PRESS_SHORT',
Sensor = 'hm-rpc.0.KEQ0905365.1.STATE',
Am besten Du geht mal einen Schritt zurück und schaust mal was Dein Sensor und der Tast-Aktor in iobroker machen. Erst wenn die korrekt funktionieren macht es Sinn bei der Homekitanbindung / bei dem Skript weiter zu schauen… `
Also der Sensor ändert sich im iobroker von true auf false.
Der Aktor allerdings bleibt immer auf true stehen. Egal ob ich kurz oder lang drücke :roll:
Ja die Geräte habe ich im Script auf meine geändert
-
Also der Sensor ändert sich im iobroker von true auf false. `
Dann hast Du wohl den Sensor im Skript nicht korrekt eingetragen. Denn sonst sollte bei einer true/false Änderung oder anders herum mindesten "Manuelle Tor Betätigung (Sensor)." im Log stehen.
Fangen wir mal von vorne an und gucken, ob wir Deinen Sensor korrekt eingebunden kriegen. Im folgendes Blocky bei "Falls Objekt" Deinen Garagentorsensor eintragen. Dann das Tor öffnen und schließen und das Log posten.
Wie Du deinen Autor so konfigurierst das er von true auf false geht nach 1sec kann ich Dir nicht sagen, da ich keine HM Geräte habe. Ich meine aber das ich sowas schon mal hier im Forum gelesen habe…
Blocky Export:
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id=",9B(+H]0A=#saLI8lGU]" x="-587" y="-863"><field name="COMMENT">Hier den Garagentor Sensor eintragen</field>
<next><block type="on_ext" id="Jt?nkA%L`4r|gps=/t!h"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="?o4|07e}rblTO?!Z`wTY"><field name="oid">default</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="*4-nikoG-SxhK!NN`g]T"><mutation else="1"></mutation> <value name="IF0"><block type="logic_compare" id="[klT`5rn{*K0hvhR*HHZ"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="#XwYg.iM6a`XbD/gf9t8"><field name="VAR">value</field></block></value> <value name="B"><block type="logic_boolean" id="*#bo1?J,{x`x.y}#.#Dc"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO0"><block type="debug" id=")UG-n60srg?}dS7AL}yF"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="(2pLEtC1qwQ@#Oov6=G["><field name="TEXT">Sensor Garagentor = false (offen)</field></shadow></value></block></statement> <statement name="ELSE"><block type="debug" id="FWG?uc[DrX},[_6p9#.C"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="K~A/S5DCJ]H6lk}t?*N]"><field name="TEXT">Sensor Garagentor = true (geschlossen)</field></shadow></value></block></statement></block></statement></block></next></block>
<block type="on_ext" id="O@7b`I1WXkNV%v%wDjAH" x="-313" y="163"><mutation items="1"></mutation>
<field name="CONDITION">true</field><value name="OID0"><shadow type="field_oid" id="l?Ule;.VxJC1Xn!J_L[;"><field name="oid">default</field></shadow></value></block>
<block type="controls_if" id="ojQd;po+_z|tIhSEVou~" x="-462" y="338"><value name="IF0"><block type="time_compare_ex" id="Hmua^Lg6=]mxv:MA6s48"><mutation end_time="true" actual_time="true"></mutation>
<field name="USE_ACTUAL_TIME">TRUE</field>
<field name="OPTION">not between</field>
<value name="START_TIME"><shadow type="text" id="b-!UNutJrGrV)pLsDWAV"><field name="TEXT">04:00</field></shadow></value>
<value name="END_TIME"><shadow type="text" id="mAT:?eD7gWS+JU(yh]fm"><field name="TEXT">07:00</field></shadow></value></block></value></block></xml>[3610_bildschirmfoto_2018-03-29_um_11.53.07.jpg](/assets/uploads/files/3610_bildschirmfoto_2018-03-29_um_11.53.07.jpg)
-
Mein Gott was hast du eine Geduld mit mir
Also…. hier mal der Log von deinem Blocky.....
undefined2018-03-29 13:01:29.173 - info: javascript.0 script.js.Intern.garagetest22: Manuelle Tor Betätigung (Sensor). 2018-03-29 13:01:29.176 - info: javascript.0 script.js.aaaa: Sensor Garagentor = true (geschlossen) 2018-03-29 13:01:34.179 - info: javascript.0 script.js.Intern.garagetest22: Manuelle Tor Betätigung (Sensor): Setze Tor in HK als geschlossen. 2018-03-29 13:01:53.745 - info: javascript.0 script.js.Intern.garagetest22: Manuelle Tor Betätigung (Sensor). 2018-03-29 13:01:53.749 - info: javascript.0 script.js.aaaa: Sensor Garagentor = false (offen) 2018-03-29 13:01:58.749 - info: javascript.0 script.js.Intern.garagetest22: Manuelle Tor Betätigung (Sensor): Setze Tor in HK als offen. 2018-03-29 13:01:58.757 - info: javascript.0 script.js.Intern.garagetest22: schalteGaragentor (HK)
und komischerweise was vielleicht auch dran liegt das ich mal CCU und iobroker neugestartet habe kommt bei manueller Öffnung im Log jetzt das hier
undefined2018-03-29 13:13:16.464 - info: javascript.0 script.js.Intern.garagetest22: Manuelle Tor Betätigung (Sensor). 2018-03-29 13:13:21.466 - info: javascript.0 script.js.Intern.garagetest22: Manuelle Tor Betätigung (Sensor): Setze Tor in HK als offen.
auch kommt jetzt bei HK die Meldung das Tor offen oder zu ist, nur steuern lässt es sich noch nicht
-
Bei den Datenpunkten steht jetzt bei offen bei beiden 0 und bei zu die 1
-
Na dann musst du es ja nur noch hinbekommen, das dein Taster true/false anzeigt…
-
Ok wenn ich das richtig verstehe benötige ich ein Taster dir dauerhaft auf false steht und nur beim drücken kurz auf true und dann direkt wieder auf false. Das macht mein Homematictaster leider nicht. Der Aktor der zum schalten des Tores verbaut ist steht dauerhaft auf false und brauch auch nur den kurzen Impuls mit true. Habe dann im Script bei Schalter direkt den Aktor eingetragen jedoch auch ohne Erfolg. Dann habe ich ein Xiaomi Taster der auch dauerhaft auf false steht und beim druck kurz auf true geht genau wie es sein soll genommen. Hab ihn mit dem Garagenaktor per Script verknüpft und das Tor reagiert auch wie gewollt auf den Schalter. Schalter ID im Script eingetragen und mit HK versucht doch wieder tut sich nichts
-
Was steht im Log?
-
Leider garnichts wenn ich mit HK öffne. Nur manuell schreibt er …..