NEWS
Yahka Konfiguration für Garagentor mit Licht
-
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 …..
-
Komisch. Dann nimm dich mal das Blocky und fügen anstelle des Sensors deinen Taster ein und passe den Text im Debug etwas an…
Dann 2-3x den Taster drücken und Log posten...
-
Leider garnichts wenn ich mit HK öffne. Nur manuell schreibt er ….. `
Grade nochmal probiert, warum auch immer schreibt er jetzt beim betätigen durch HK folgendes im Log….
bei deinem Blocky hab ich mal den Aktor am Garagentor eingetragen, da kommt folgender Log…
-
Die Log Ausgaben "Taster wurde betätigt.", "Taster wurde betätigt: Setze HK auf "wird geöffnet…" und "Taster wurde betätigt: Setze HK auf "wird geschlossen..." sollten mit Deinen Xiaomi Taster auch im Log zu finden sein. Korrekt?
Ich habe das Skript mal um zzgl. Log-Ausgaben erweitert...
! ````
// 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.
// V1.2 (30.03.2018): zzgl. Log-Ausgaben eingebaut
! //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)'); console.log('StatusLageGaragentor = ' + StatusLageGaragentor); console.log('StatusSchalteGaragentor = ' + StatusSchalteGaragentor); 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);
});
-
Hier das Log mit deinem neuen Script wenn ich den Xiaomi Taster manuell betätige(Tor reagiert auch wie gewünscht und zeigt im HK auch richtigen Zustand an)
undefined2018-03-31 09:27:29.037 - info: javascript.0 script.js.Intern.GarageHK: Taster wurde betätigt. 2018-03-31 09:27:29.038 - info: javascript.0 script.js.Intern.GarageHK: Taster wurde betätigt: Setze HK auf "wird geöffnet..." 2018-03-31 09:27:29.045 - info: javascript.0 script.js.Intern.GarageHK: schalteGaragentor (HK) 2018-03-31 09:27:29.046 - info: javascript.0 script.js.Intern.GarageHK: StatusLageGaragentor = 0 2018-03-31 09:27:29.047 - info: javascript.0 script.js.Intern.GarageHK: StatusSchalteGaragentor = 0 2018-03-31 09:27:29.335 - info: javascript.0 script.js.Intern.GarageHK: Taster wurde betätigt. 2018-03-31 09:27:31.310 - info: javascript.0 script.js.Intern.GarageHK: Manuelle Tor Betätigung (Sensor). 2018-03-31 09:27:36.312 - info: javascript.0 script.js.Intern.GarageHK: Manuelle Tor Betätigung (Sensor): Setze Tor in HK als offen.
Hier der Log wenn ich über HK steuern will, 4x dedrückt(Tor reagiert nicht, im HK wird der Zustand angezeigt als ob sich Tor öffnet)
undefined2018-03-31 09:31:50.573 - info: javascript.0 script.js.Intern.GarageHK: schalteGaragentor (HK) 2018-03-31 09:31:50.574 - info: javascript.0 script.js.Intern.GarageHK: StatusLageGaragentor = 1 2018-03-31 09:31:50.574 - info: javascript.0 script.js.Intern.GarageHK: StatusSchalteGaragentor = 1 2018-03-31 09:32:09.728 - info: javascript.0 script.js.Intern.GarageHK: schalteGaragentor (HK) 2018-03-31 09:32:09.729 - info: javascript.0 script.js.Intern.GarageHK: StatusLageGaragentor = 0 2018-03-31 09:32:09.730 - info: javascript.0 script.js.Intern.GarageHK: StatusSchalteGaragentor = 0 2018-03-31 09:32:22.542 - info: javascript.0 script.js.Intern.GarageHK: schalteGaragentor (HK) 2018-03-31 09:32:22.543 - info: javascript.0 script.js.Intern.GarageHK: StatusLageGaragentor = 1 2018-03-31 09:32:22.543 - info: javascript.0 script.js.Intern.GarageHK: StatusSchalteGaragentor = 1 2018-03-31 09:32:32.031 - info: javascript.0 script.js.Intern.GarageHK: schalteGaragentor (HK) 2018-03-31 09:32:32.032 - info: javascript.0 script.js.Intern.GarageHK: StatusLageGaragentor = 0 2018-03-31 09:32:32.032 - info: javascript.0 script.js.Intern.GarageHK: StatusSchalteGaragentor = 0
Hoffe das reicht dir so um was raus lesen zu können
-
Ist ein Fehler in meinem Skript. Ich schauen es mir mal an…
-
Hier nun eine funktionierende Version des Skripts…
Wenn es funktioniert, kannst Du die "console.log" Zeilen auskommentieren oder löschen.
<u>V1.3 (aktuelle Version) des Skripts:</u>
! ````
// 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.3 (01.04.2018): Fehlerkorrekturen
// V1.2 (30.03.2018): zzgl. Log-Ausgaben eingebaut
// 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 = 'zwave.0.NODE4.SWITCH_BINARY.Switch_1',
Sensor = 'zwave.0.NODE2.SENSOR_BINARY.Sensor_1',
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, StatusLageGaragentor = getState(LageGaragentor).val; console.log('Taster wurde betätigt.'); if (StatusLageGaragentor === 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 (StatusLageGaragentor === 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 = getState(LageGaragentor).val,
StatusSchalteGaragentor = value;console.log('schalteGaragentor (HK)'); console.log('StatusLageGaragentor = ' + StatusLageGaragentor); console.log('StatusSchalteGaragentor = ' + StatusSchalteGaragentor); 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);
});
-
Super danke….kann es morgen leider erst probieren da ich nicht zuhause bin.
Sag mal , was muss ich denn machen wenn ich ein 2. Tor auf diese Art einbinden will oder wäre das so einfach nicht möglich?
-
Super danke….kann es morgen leider erst probieren da ich nicht zuhause bin.
Sag mal , was muss ich denn machen wenn ich ein 2. Tor auf diese Art einbinden will oder wäre das so einfach nicht möglich? `
Skript kopieren, umbenennen, Sensor und Aktor von Tor 2 eintragen, fertig…
-
Super danke….kann es morgen leider erst probieren da ich nicht zuhause bin.
Sag mal , was muss ich denn machen wenn ich ein 2. Tor auf diese Art einbinden will oder wäre das so einfach nicht möglich? `
Skript kopieren, umbenennen, Sensor und Aktor von Tor 2 eintragen, fertig… `
Also erstmal Herzlichen Dank für deine Mühe und Geduld, das Tor lässt sich jetzt wie gewollt mit deinem überarbeiteten Script steuern
Tor 2 läuft leider noch nicht, nachdem ich wie von dir empfohlen Script kopiert, unbenannt und Sensoren eingetragen habe fährt es zwar auf und zu allerdings das andere Tor auch parallel :lol:
Ich denke ich müsste dann auch 2 neue Datenpunkte haben die ich dann in den HK eintrage oder?
-
Hab es selber hinbekommen. Hab im Script auf "javascript.0.virtualDevices.Garagentor.schalteGaragentor2_HK" geändert dann die 2 neuen Datenpunkte beim 2. Tor eingetragen und jetzt läuft es….
-
Stimmt. Die Datenpunkte solle man auch ändern… <emoji seq="1f92a">🤪</emoji>