NEWS
Yahka Konfiguration für Garagentor mit Licht
-
Stimmt. Die Datenpunkte solle man auch ändern… <emoji seq="1f92a">🤪</emoji>
-
Hallo, ich würde mich gerne hier mal mit einklinken.
Ich nutze den HMIP-PCBS zur Schaltung des Garagentorantriebs Promatic 3 (welcher die besagten Stellungen kennt Taste drücken geht auf, Taste drücken Stoppt, Taste drücken geht wieder zu). Virtuelle Taste bzw. Programm ist angelegt das der Schaltaktor für 0,5 Sekunden einen Impuls bekommt und nach 3 Sekunden wieder abschaltet.
Zusätzlich nutze ich einen TFK zur Meldung ob das Garagentor zu oder offen ist - HMIP-SWDO
Mit Yahka kann ich das Garagentor mit Homekit zwar steuern (als Schalter) aber der echte Status wird mir so nicht angezeigt. Ich drücke den Schalter im Homekit und das Garagentor bewegt sich. Der echte Status ob offen oder geschlossen wird nicht übermittelt.
Habe dann dank eures Threads mir die Datenpunkte gesetzt das Javascript (hier aus dem Thread - Version 1.3) erstellt - meine Adapter hinterlegt. Das in Yahka hinterlegt usw. Ich wollte damit anfangen das der richtige Torstatus über den TFK an Homekit übermittelt wird (was ja Grundvorraussetzung für die Schaltung ist) . Nach eurem Scripten sollte der TFK eigentlich true or false melden bei mir steht OPEN and CLOSED. Dadurch kommt das Teil wohl etwas durcheinander der TFK Status meldet CLOSED in Homekit steht das Garagentor würde aufgehen. Und genauso umgekehrt bei OPEN sagt er das Garagentor schließt bzw. ist geschlossen.
:idea:
Habe mir schon nen Wolf gebastelt bei dem Sensor das der true / false zurückmeldet - hat nicht geklappt - aber 1 oder 0 hatte ich hinbekommen. Das hatte ich auch mal ins Javascript eingebaut. Kurzfassung hat alles nicht funktioniert. Hatte auch mal im Javascript OPEN / CLOSED probiert - das hat auch nicht geklappt. :shock: :? :?:
Habe jetzt alle meine Änderungen wieder zurückgesetzt und stehe jetzt wieder jungfräulich da. Habt ihr eine Idee oder evtl. noch ein funktionierendes Script das den Status meldet nach Homekit und das ich bei Siri sagen kann öffne das Garagentor und schließe das Garagentor?
Wäre über jede Hilfe wirklich sehr dankbar!!!!
-
Du musst einfach nur die Zeile
SensorStatusTor_geschlossen = false; // Status des Aktors wenn das Tor geschlossen ist
im Skript V1.3 durch
SensorStatusTor_geschlossen = CLOSED; // Status des Aktors wenn das Tor geschlossen ist
ersetzen. Dann sollte es gehen
-
Das hatte ich auch schon mal probiert meine ich. Aber ich versuche mein Glück heute Abend nochmal und werde berichten.
Gerade weil die Steuerung über Homekit auch noch nicht funktioniert hatte. Habe das auf meinen virtuellen Taster verlinkt der nach 3 Sekunden den Aktor auf aus setzt.
Aber erst mal den richtigen Status im Homekit hinkriegen dann sehen wir weiter!
Vielen Dank schon mal!
-
Also das Problem besteht weiterhin - der Adapter steht auf Closed - Homekit zeigt geöffnet an.
Öffnen oder Schließen lässt sich über Homekit leider auch nicht.
Hier mal meine Dateien:
javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK
! var timeout;
! on({id: 'HMIP-SWDO 0000D7099A6ABD:1.STATE', change: "ne"}, function (obj) {
! var value = obj.state.val;
! var oldValue = obj.oldState.val;
! timeout = setTimeout(function () {
! if (getState("HMIP-SWDO 0000D7099A6ABD:1.STATE").val === CLOSED) {
! // Definiere Tor f¸r HK als geschlossen
! setState("javascript.0.LageGaragentor_HK"/LageGaragentor_HK/, 1, true);
! setState("javascript.0.schalteGaragentor_HK"/schalteGaragentor_HK/, 1, true);
! } else {
! // Definiere Tor f¸r HK als offen
! setState("javascript.0.LageGaragentor_HK"/LageGaragentor_HK/, 0, true);
! setState("javascript.0.schalteGaragentor_HK"/schalteGaragentor_HK/, 0, true);
! }
! }, 5000);
! });javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK
! // 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 = 'HmIP-PCBS 0004570993E67E:3.STATE',
! Sensor = 'HMIP-SWDO 0000D7099A6ABD:1.STATE',
! SensorStatusTor_geschlossen = CLOSED; // 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);
! });Sensor
~~http://up.picr.de/32854139jy.jpg" />
Schalter
http://up.picr.de/32854140zh.jpg" />~~ -
Heißt der Status Closed oder CLOSED?
Das erste Skript darf nicht laufen, sondern nur das 2. Das erste war eine frühe Version und die V1.3 ist die Dose etwas ausgefeiltere.
-
und javascript gibt nen Fehler aus
16:47:31.920 [error] javascript.0 script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK: script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK:15
16:47:31.921 [error] javascript.0 at script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK:15:32
-
Der Status ist CLOSED (0) ""
aber du verweist doch hier auch auf das 1. Script
var schalteGaragentor = 'javascript.0.virtualDevices.Garagentor.schalteGaragentor_HK',
LageGaragentor = 'javascript.0.virtualDevices.Garagentor.LageGaragentor_HK',
TimeoutHKSetzen = 5000,
timeout;
-
Weißt du wo mein Fehler liegt?
-
Weißt du wo mein Fehler liegt? `
Immer mal langsam mit den Pferden. Du musst mir schon etwas Zeit zum Antworten geben. Ich helfe im Rahmen meiner Möglichkeiten gerne, aber etwas Geduld musst Du schon mitbringen.
Wie alle anderen hier auch, habe ich ein Privatleben mit Familie und mache das in meiner begrenzten freien Zeit!
Nun zu Deinem Problem:
@Haciendaloca:aber du verweist doch hier auch auf das 1. Script
var schalteGaragentor = 'javascript.0.virtualDevices.Garagentor.schalteGaragentor_HK',
LageGaragentor = 'javascript.0.virtualDevices.Garagentor.LageGaragentor_HK',
TimeoutHKSetzen = 5000,
timeout; `
Hier verweise ich nicht auf ein Skript, sondern auf die Datenpunkte die im Skript V1.3 für yahka gefüllt werden.Am Besten löschst Du mal alles unterhalb von javascript.0.virtualDevices.Garagentor und Startest das V1.3 Skript neu (und das andere Skript kann weg).
Um herauszufinden, was der wirkliche Status deines Sensors ist, bitte mal den folgenden Teil des Skripts wie folgt erweitern und die Log-Ausgabe posten:
! ````
on({id: Sensor, change: "ne"}, function (obj) {
var value = obj.state.val;
var StatusSensor = value;// ### NEU ### console.log('Status Sensor: ###' + StatusSensor + '###'); // ### ENDE NEU ### console.log('Manuelle Tor Betätigung (Sensor).'); ...
-
Hi sorry bin gerade erst wieder nach Hause gekommen:
Hab es jetzt so angepasst:
! // 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 = 'HmIP-PCBS 0004570993E67E:3.STATE',
! Sensor = 'HMIP-SWDO 0000D7099A6ABD:1.STATE',
! SensorStatusTor_geschlossen = CLOSED; // 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;
! on({id: Sensor, change: "ne"}, function (obj) {
! var value = obj.state.val;
! var StatusSensor = value;
! // ### NEU ###
! console.log('Status Sensor: ###' + StatusSensor + '###');
! // ### ENDE NEU ###
! console.log('Manuelle Tor Betätigung (Sensor).');
! });Unten drunter steht dann folgender Fehler:
23:07:25.347 [error] javascript.0 script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK: script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK:15
23:07:25.347 [error] javascript.0 at script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK:15:32
Im Log folgendes:
javascript.0 2018-06-02 21:08:30.049 error at ContextifyScript.Script.runInContext (vm.js:35:29)
javascript.0 2018-06-02 21:08:30.048 error at script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK:15:32
javascript.0 2018-06-02 21:08:30.047 error ReferenceError: CLOSED is not defined
javascript.0 2018-06-02 21:08:30.047 error ^
javascript.0 2018-06-02 21:08:30.046 error SensorStatusTor_geschlossen = CLOSED; // Status des Aktors wenn das Tor geschlossen ist
javascript.0 2018-06-02 21:08:30.045 error script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK: script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK:15
javascript.0 2018-06-02 21:08:30.025 info Start javascript script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK
javascript.0 2018-06-02 21:08:29.001 info Stop script script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK
Im Garagentorsensor steht folgendes - macht es evtl Sinn den anzupassen das die "richtigen" Meldungen an das Script kommen?:
! {
! "from": "system.adapter.hm-rega.1",
! "ts": 1527787596739,
! "common": {
! "name": "HMIP-SWDO 0000D7099A6ABD:1.STATE",
! "def": "CLOSED",
! "type": "number",
! "min": "CLOSED",
! "max": "OPEN",
! "unit": "",
! "role": "state",
! "read": true,
! "write": false,
! "states": {
! "0": "CLOSED",
! "1": "OPEN"
! }
! },
! "native": {
! "MIN": "CLOSED",
! "UNIT": "",
! "MAX": "OPEN",
! "ID": "STATE",
! "TYPE": "ENUM",
! "DEFAULT": "CLOSED",
! "CONTROL": "DOOR_SENSOR.STATE",
! "OPERATIONS": 5,
! "FLAGS": 1,
! "TAB_ORDER": 0,
! "VALUE_LIST": [
! "CLOSED",
! "OPEN"
! ]
! },
! "acl": {
! "object": 1636,
! "owner": "system.user.admin",
! "ownerGroup": "system.group.administrator",
! "state": 1636
! },
! "_id": "hm-rpc.2.0000D7099A6ABD.1.STATE",
! "type": "state"
! } -
Keine Ahnung was da falsch läuft. Poste mal Dein gesamtes Skript…
Ist das alte Skript wirklich gestoppt?
-
Das alte Skript LageGaragentor habe ich gelöscht und nur noch dein 1.3 Skript aktiv.
Das hier ist die Versionen die aktuell läuft und irgendwie mit dem Status des Tores nicht zurecht kommt. Habe wie von dir gesagt alles gelöscht und deinen Text eingefügt.
! // 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 = 'HmIP-PCBS 0004570993E67E:3.STATE',
! Sensor = 'HMIP-SWDO 0000D7099A6ABD:1.STATE',
! SensorStatusTor_geschlossen = CLOSED; // Status des Aktors wenn das Tor geschlossen ist
! ///
! var schalteGaragentor = 'javascript.0.virtualDevices.Garagentor.schalteGaragentor_HK',
! });
! on({id: Sensor, change: "ne"}, function (obj) {
! var value = obj.state.val;
! var StatusSensor = value;
! // ### NEU ###
! console.log('Status Sensor: ###' + StatusSensor + '###');
! // ### ENDE NEU ###
! console.log('Manuelle Tor Betätigung (Sensor).');Mein Ansatz wäre erst mal den Status des Tors in den Griff zu kriegen um dann halt sich mit der Öffnung und Schließung zu befassen.
Könnten wir nicht den Status des TFK anpassen das der für das Skript lesbare "richtige" Status übermittelt wird?
! {
! "from": "system.adapter.hm-rega.1",
! "ts": 1527787596739,
! "common": {
! "name": "HMIP-SWDO 0000D7099A6ABD:1.STATE",
! "def": "CLOSED",
! "type": "number",
! "min": "CLOSED",
! "max": "OPEN",
! "unit": "",
! "role": "state",
! "read": true,
! "write": false,
! "states": {
! "0": "CLOSED",
! "1": "OPEN"
! }
! },
! "native": {
! "MIN": "CLOSED",
! "UNIT": "",
! "MAX": "OPEN",
! "ID": "STATE",
! "TYPE": "ENUM",
! "DEFAULT": "CLOSED",
! "CONTROL": "DOOR_SENSOR.STATE",
! "OPERATIONS": 5,
! "FLAGS": 1,
! "TAB_ORDER": 0,
! "VALUE_LIST": [
! "CLOSED",
! "OPEN"
! ]
! },
! "acl": {
! "object": 1636,
! "owner": "system.user.admin",
! "ownerGroup": "system.group.administrator",
! "state": 1636
! },
! "_id": "hm-rpc.2.0000D7099A6ABD.1.STATE",
! "type": "state"
! } -
Das alte Skript LageGaragentor habe ich gelöscht und nur noch dein 1.3 Skript aktiv.
Das hier ist die Versionen die aktuell läuft und irgendwie mit dem Status des Tores nicht zurecht kommt. Habe wie von dir gesagt alles gelöscht und deinen Text eingefügt. `
Da hast Du mich nicht richtig verstanden. Du sollte nur die eine Zeile die mit NEU gekennzeichnet ist an der von mir beschriebenen Position einfügen. Nicht alles löschen…
-
Jetzt stehe ich total am Schlauch? Welche Zeile meinst du da genau - ich finde das Wort NEU gar nicht im Skript?
Wärst du so lieb und würdest mir das kurz zusammenschneiden vom Skript her was du da meinst?
Das hier war ja dein 1.3 Skript
! // 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 = 'HmIP-PCBS 0004570993E67E:3.STATE',
! Sensor = 'HMIP-SWDO 0000D7099A6ABD:1.STATE',
! SensorStatusTor_geschlossen = CLOSED; // 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);
! }); -
Ok. Dann bereite ich mal alles mundgerecht auf….
Bitte alle Versionen des Skriptes stoppen, löschen und die folgende Version neu einfügen und starten.
Dann bitte das Tor einmal öffnen und wieder schließen und die LOG-Ausgaben posten.
Zzgl. bitte die yahka Konfiguration des Garagentors posten. Die dort eingetragenen Datenpunkte müssen lesbar sein...
// 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('Status Sensor: ###' + StatusSensor + '###'); // 04.06.2018: Log-Ausgaben hinzugefügt. 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); });
MOD EDIT: 10.01.2022 Script erneut in Code Tags gepackt da Formatierung defekt
-
OK vielen vielen Dank dafür!
Ich benenne die Adapter dann nur noch um auf meine und füge den Rest so ein. Mal sehen was passiert
Freu!
Hab heute leider meinen Laptop vergessen, daher aktuell nur übers Handy Zugriff. Da gestaltet sich sowas immer schwierig.
-
Also schalten ließ es sich nicht mit Homekit, habe es dann mal mit Homematic angestossen. Da geht das Tor zu aber die Meldung wird nicht ins Homekit übernommen. Irgendwie sehe ich den Wald vor lauter Bäumen nicht. :roll:
Im Yahka ist folgendes eingetragen - Garage Door Opener Konfiguration:
CurrentDoorState mein Datenpunkt
~~http://up.picr.de/32883728wq.jpg" />
TargetDoorState
~~http://up.picr.de/32883736wb.jpg" />
Objektübersicht
~~http://up.picr.de/32883742ko.jpg" />
Homekit am Iphone:
~~http://up.picr.de/32883754is.jpg" />
Das Script gibt gar keinen Log mehr aus
Log Datei
! javascript.0 2018-06-04 15:43:19.927 info script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK: registered 3 subscriptions and 0 schedules
! javascript.0 2018-06-04 15:43:19.915 info Start javascript script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK
! javascript.0 2018-06-04 15:43:18.884 info Stop script script.js.common.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK
! yahka.0 2018-06-04 15:43:05.680 info adding Garage with UUID: 49a7c3bb-310e-48fb-bc28-a290d7aa6e29
! yahka.0 2018-06-04 15:43:05.662 info adding Steckdose Wohnzimmer Lampe with UUID: 32d3b638-53fa-45bc-a087-f6233a6d8be2
! yahka.0 2018-06-04 15:43:05.637 info adapter ready, checking config
! yahka.0 2018-06-04 15:43:05.612 info starting. Version 0.7.1 in /opt/iobroker/node_modules/iobroker.yahka, node: v6.13.0
! host.raspberrypi 2018-06-04 15:43:03.610 info instance system.adapter.yahka.0 started with pid 10009
! host.raspberrypi 2018-06-04 15:43:03.592 info object change system.adapter.yahka.0
! hm-rpc.2 2018-06-04 15:43:03.348 info new HmIP devices/channels after filter: 0
! hm-rpc.2 2018-06-04 15:43:03.336 info xmlrpc <- newDevices 46
! hm-rpc.2 2018-06-04 15:43:02.842 info xmlrpc -> 0 devices
! hm-rpc.2 2018-06-04 15:43:02.822 info xmlrpc <- listDevices ["hm-rpc.2"]
! host.raspberrypi 2018-06-04 15:43:01.270 info instance system.adapter.yahka.0 terminated with code 0 (OK)~~~~~~~~ -
Du musst schon in yahka die Datenpunkte einbinden die im Skript v1.3 stehen.
Also alles was unter virtualDevice.Garagentor steht…
-
OK ich hab jetzt die Virtual Devices Garagentor Datenpunkte in Yahka eingebunden.
Allerdings kommt jetzt im LOG folgendes:
Caught 2018-06-04 20:04:22.989 error by controller[21]: Mon, 04 Jun 2018 20:04:22 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.alive",{"val":false,"ack":true,"from":"system.adapter.yah Caught 2018-06-04 20:04:22.989 error by controller[20]: Mon, 04 Jun 2018 20:04:22 GMT socket.io-client:socket emitting packet with ack id 49 Caught 2018-06-04 20:04:22.989 error by controller[19]: Mon, 04 Jun 2018 20:04:22 GMT socket.io-client:socket calling ack 48 with [null,"system.adapter.yahka.0.alive"] Caught 2018-06-04 20:04:22.989 error by controller[18]: Mon, 04 Jun 2018 20:04:22 GMT engine.io-client:socket socket receive: type "message", data "348[null,"system.adapter.yahka.0.alive"]" Caught 2018-06-04 20:04:22.988 error by controller[17]: Mon, 04 Jun 2018 20:04:22 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.988 error by controller[16]: Mon, 04 Jun 2018 20:04:22 GMT socket.io-client:manager writing packet {"type":2,"data":["pushLog","system.adapter.admin.0",{"message":"yahka.0 cleaned everything up…","severity": Caught 2018-06-04 20:04:22.988 error by controller[15]: Mon, 04 Jun 2018 20:04:22 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.988 error by controller[15]: Mon, 04 Jun 2018 20:04:22 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.alive",{"val":false,"ack":true,"from":"system.adapter.yah Caught 2018-06-04 20:04:22.988 error by controller[15]: Mon, 04 Jun 2018 20:04:22 GMT socket.io-client:socket emitting packet with ack id 48 Caught 2018-06-04 20:04:22.987 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT engine.io-client:socket flushing 7 packets in socket Caught 2018-06-04 20:04:22.987 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.outputCount",{"val":8,"ack":true,"from":"system.adapter.y Caught 2018-06-04 20:04:22.986 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.inputCount",{"val":0,"ack":true,"from":"system.adapter.ya Caught 2018-06-04 20:04:22.986 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.uptime",{"val":527,"ack":true,"from":"system.adapter.yahk Caught 2018-06-04 20:04:22.986 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.memHeapUsed",{"val":9.72,"ack":true,"from":"system.adapte Caught 2018-06-04 20:04:22.986 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.memHeapTotal",{"val":15.98,"ack":true,"from":"system.adap Caught 2018-06-04 20:04:22.986 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.memRss",{"val":35.27,"ack":true,"from":"system.adapter.ya Caught 2018-06-04 20:04:22.986 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.connected",{"val":true,"ack":true,"expire":30,"from":"sys Caught 2018-06-04 20:04:22.985 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.985 error by controller[14]: Mon, 04 Jun 2018 20:04:21 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.alive",{"val":true,"ack":true,"expire":30,"from":"system. Caught 2018-06-04 20:04:22.985 error by controller[13]: Mon, 04 Jun 2018 20:04:20 GMT engine.io-client:socket socket receive: type "pong", data "undefined" Caught 2018-06-04 20:04:22.985 error by controller[12]: Mon, 04 Jun 2018 20:04:20 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.984 error by controller[12]: Mon, 04 Jun 2018 20:04:20 GMT engine.io-client:socket writing ping packet - expecting pong within 60000ms Caught 2018-06-04 20:04:22.984 error by controller[11]: Mon, 04 Jun 2018 20:04:20 GMT engine.io-client:socket socket receive: type "pong", data "undefined" Caught 2018-06-04 20:04:22.984 error by controller[10]: Mon, 04 Jun 2018 20:04:20 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.984 error by controller[10]: Mon, 04 Jun 2018 20:04:20 GMT engine.io-client:socket writing ping packet - expecting pong within 60000ms Caught 2018-06-04 20:04:22.983 error by controller[9]: Mon, 04 Jun 2018 20:04:06 GMT engine.io-client:socket flushing 7 packets in socket Caught 2018-06-04 20:04:22.982 error by controller[8]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.outputCount",{"val":8,"ack":true,"from":"system.adapter.ya Caught 2018-06-04 20:04:22.982 error by controller[8]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.inputCount",{"val":0,"ack":true,"from":"system.adapter.yah Caught 2018-06-04 20:04:22.981 error by controller[8]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.uptime",{"val":512,"ack":true,"from":"system.adapter.yahka Caught 2018-06-04 20:04:22.980 error by controller[8]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.memHeapUsed",{"val":9.61,"ack":true,"from":"system.adapter Caught 2018-06-04 20:04:22.980 error by controller[8]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.memHeapTotal",{"val":15.98,"ack":true,"from":"system.adapt Caught 2018-06-04 20:04:22.980 error by controller[8]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.memRss",{"val":35.27,"ack":true,"from":"system.adapter.yah Caught 2018-06-04 20:04:22.980 error by controller[8]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.connected",{"val":true,"ack":true,"expire":30,"from":"syst Caught 2018-06-04 20:04:22.979 error by controller[7]: Mon, 04 Jun 2018 20:04:06 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.979 error by controller[6]: Mon, 04 Jun 2018 20:04:06 GMT socket.io-client:manager writing packet {"type":2,"data":["setState","system.adapter.yahka.0.alive",{"val":true,"ack":true,"expire":30,"from":"system.a Caught 2018-06-04 20:04:22.979 error by controller[5]: Mon, 04 Jun 2018 20:03:55 GMT engine.io-client:socket socket receive: type "pong", data "undefined" Caught 2018-06-04 20:04:22.979 error by controller[4]: Mon, 04 Jun 2018 20:03:55 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.978 error by controller[3]: Mon, 04 Jun 2018 20:03:55 GMT engine.io-client:socket writing ping packet - expecting pong within 60000ms Caught 2018-06-04 20:04:22.978 error by controller[2]: Mon, 04 Jun 2018 20:03:55 GMT engine.io-client:socket socket receive: type "pong", data "undefined" Caught 2018-06-04 20:04:22.978 error by controller[1]: Mon, 04 Jun 2018 20:03:55 GMT engine.io-client:socket flushing 1 packets in socket Caught 2018-06-04 20:04:22.977 error by controller[1]: Mon, 04 Jun 2018 20:03:55 GMT engine.io-client:socket writing ping packet - expecting pong within 60000ms
MOD EDIT: LOG IN CODE TAGS GESETZT