NEWS
Yahka Konfiguration für Garagentor mit Licht
-
Hallo, ich bekomme es mit dem Script einfach nicht hin :oops:
Irgendwas läuft da nicht richtig. Habe folgende 2 Scripte mit meinen Geräten versucht zu ändern. Wo liegt denn der Fehler??
var timeout; on({id: 'hm-rpc.0.NEQ0067397.1.STATE', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout = setTimeout(function () { if (getState("hm-rpc.0.NEQ0067397.1.STATE").val == false) { // Definiere Tor für HK als geschlossen setState("javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK"/*LageGaragentor_HK*/, 1, true); setState("javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK"/*schalteGaragentor_HK*/, 1, true); } else { // Definiere Tor für HK als offen setState("javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK"/*LageGaragentor_HK*/, 0, true); setState("javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK"/*schalteGaragentor_HK*/, 0, true); } }, 1000); });
und….
on({id: 'hm-rpc.0.MEQ0165463.4.STATE', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK").val == 1) { // Tor geschlossen if (getState("hm-rpc.0.MEQ0165463.4.STATE").val == true) { // Öffne das Tor setState("javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK"/*schalteGaragentor_HK*/, 0, true); } } else if (getState("javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK").val == 0) { // Tor offen if (getState("hm-rpc.0.MEQ0165463.4.STATE").val == true) { // Schließe das Tor setState("javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK"/*schalteGaragentor_HK*/, 1, true); // Tor wird geschlossen } } }); on({id: 'javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK").val == 1) { // Tor geschlossen if (getState("javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK").val == 0) { // Öffne das Tor setState(""hm-rpc.0.MEQ0165463.4.STATE", true); } } else if (getState("javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK").val == 0) { // Tor offen if (getState("javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK").val == 1) { // Schließe das Tor setState("hm-rpc.0.MEQ0165463.4.STATE", true); } } });
-
Im Raten bin ich nicht so gut. Bitte das Fehlerbild möglichst genau beschreiben…
-
Im Raten bin ich nicht so gut. Bitte das Fehlerbild möglichst genau beschreiben… `
Sorry….. also es passiert rein garnichts wenn ich im HK das Tor öffnen will. Hier mal das Log....
6387_bildschirmfoto_2018-03-24_um_14.52.17.png -
Eigentlich sagt JavaScript ja im Log wo was falsch ist:
setState(""hm-rpc.0.MEQ0165463.4.STATE", true);
Hier ist ein “ zuviel…
-
Eigentlich sagt JavaScript ja im Log wo was falsch ist:
setState(""hm-rpc.0.MEQ0165463.4.STATE", true);
Hier ist ein “ zuviel… `
Sorry , das hätte ich natürlich sehen müssen :roll:
hab das geändert aber der Log schreibt noch immer rot. Die "warn" Meldung kommt immer dann wenn das Tor mit dem Schalter auf und zu gemacht wird. Scripte und überhaupt Biobroker ist für mich noch Neuland deshalb bitte nicht erschlagen
6387_bildschirmfoto_2018-03-24_um_19.42.48.png -
Hast Du denn die Datenpunkte
LageGaragentor_HK.LageGaragentor_HK"/*LageGaragentor_HK
schalteGaragentor_HK.schalteGaragentor_HK"/*schalteGaragentor_HK
erstellt?
Sieht nicht so aus…
-
Hast Du denn die Datenpunkte
LageGaragentor_HK.LageGaragentor_HK"/*LageGaragentor_HK
schalteGaragentor_HK.schalteGaragentor_HK"/*schalteGaragentor_HK
erstellt?
Sieht nicht so aus… `
Ich habe die beiden Scripte so benannt und erstellt. Hab ich da was falsch verstanden. Was genau ist gemeint mit Datenpunkte erstellen?
-
Hab ein Fehler gefunden, hatte die Datenpunkte(gehe mal davon aus das du die meintest) nicht richtig erstellt. Jetzt kommt im Log schonmal kein Fehler mehr aber läuft trotzdem noch nicht
6387_bildschirmfoto_2018-03-24_um_20.05.12.png -
Poste bitte mal keinen Screenshot, sondern das log selber. Bitte Spoiler und Code-Tag benutzen…
Und bitte, MEHR DETAILS!!! Bei läuft nicht kann ich Dir auch nicht helfen. Bitte beschreiben was du gemacht hast und was nicht geht. Die Bedienung über yahka oder manuell geht nicht bzw. die Anzeige ist falsch...
-
Hier mal der Log.
8-03-25 09:47:43.892 - info: javascript.0 Start javascript script.js.Intern.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK 2018-03-25 09:47:43.937 - info: javascript.0 script.js.Intern.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK: registered 2 subscriptions and 0 schedules 2018-03-25 09:48:08.042 - info: javascript.0 Stop script script.js.Intern.javascript_0_scriptEnabled_common_schalteGaragentor_HK_schalteGaragentor_HK 2018-03-25 09:48:48.514 - warn: javascript.0 State "javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK" not found 2018-03-25 09:48:48.524 - warn: javascript.0 at Object. (script.js.Intern.javascript_0_scriptEnabled_common_LageGaragentor_HK_LageGaragentor_HK:13:7) 2018-03-25 09:48:48.525 - warn: javascript.0 State "javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK" not found 2018-03-25 09:48:48.527 - warn: javascript.0 at Object. (script.js.Intern.javascript_0_scriptEnabled_common_LageGaragentor_HK_LageGaragentor_HK:14:7) 2018-03-25 09:49:03.529 - warn: javascript.0 State "javascript.0.scriptEnabled.common.LageGaragentor_HK.LageGaragentor_HK" not found 2018-03-25 09:49:03.531 - warn: javascript.0 at Object. (script.js.Intern.javascript_0_scriptEnabled_common_LageGaragentor_HK_LageGaragentor_HK:9:7) 2018-03-25 09:49:03.532 - warn: javascript.0 State "javascript.0.scriptEnabled.common.schalteGaragentor_HK.schalteGaragentor_HK" not found 2018-03-25 09:49:03.533 - warn: javascript.0 at Object. (script.js.Intern.javascript_0_scriptEnabled_common_LageGaragentor_HK_LageGaragentor_HK:10:7)
Betätige ich den Taster fürs Garagentor öffnet/schließt das Tor und im Log schreibt er die "warn" sobald das Tor ganz auf/zu ist also wenn der Homematic Kontakt sein Signal gibt.
Versuche ich über die Home App das Tor zu öffnen (Info im Log)zeigt das Icon mir das sich das Tor öffnent und dieser Kreis dreht und dreht aber leider passiert nichts. Ich hoffe das ich das jetzt vernünftig rüber gebracht habe. Muss du noch was wissen?
-
Sorry, aber die Meldung "not found" heisst für mich, die Datenpunkte sind nicht da, wo sie sein sollten…
Vielleicht kannst Du mal zeigen, wo diese unter Objekte angelegt sind?
-
Sorry, aber die Meldung "not found" heisst für mich, die Datenpunkte sind nicht da, wo sie sein sollten…
Vielleicht kannst Du mal zeigen, wo diese unter Objekte angelegt sind? `
Meinst du das mit Datenpunkte ??
6387_bildschirmfoto_2018-03-25_um_11.40.00.png -
Komisch ist auch das be Objekte/ Javascript bei den beiden Skripten weder true noch false dahinter steht. Kein Plan ob das so sein muss
6387_bildschirmfoto_2018-03-25_um_11.44.42.png -
Nein, das passt nicht…
Du hast in Yahka die Scripte eingetragen, oder? Du brauchst aber noch 2 Datenpunkte, die laut Script in javascript.0 angelegt werden. Diese müssen dann in Yahka eingetragen werden.
Leider ist die Info in Deinen Bildern zu spärlich, um damit was anfangen zu können...
Du brauchst für Dein Script:
LageGaragentor_HK.LageGaragentor_HK
schalteGaragentor_HK.schalteGaragentor_HK
Diese 2 Datenpunkte müssen unter Objekte im Ordner javascript.0 noch erstellt werden...
Da das jetzt etwas zu kompliziert zu erklären ist, schau Dir vielleicht das nochmal an:
@eumats hat es ja schon erklärt:
viewtopic.php?f=23&p=95158#p95158
Hier, wie man Datenpunkte erstellt:
-
vielen dank erstmal für deine Erklärung. Dann ist es ja kein Wunder das es nicht funktioniert. Wo genau werden denn dann die Datenpunkte in Yahka eingetragen? Ich habe es so verstanden das nur die Scripte eingetragen werden? Die Beschreibung setzt sicher Grundkenntnisse voraus die ich so wie es aussieht (noch) nicht habe. :roll:
-
So siehts bei mir aus:
Wobei ich bei mir den zweiten Unterordner weggelassen habe.
Diese Datenpunkte müssen in Yahka.
Im Script sieht es dann so aus:
! var timeout;
! on({id: 'hm-rpc.0.MEQ18541209.1.STATE', change: "ne"}, function (obj) {
! var value = obj.state.val;
! var oldValue = obj.oldState.val;
! timeout = setTimeout(function () {
! if (getState("hm-rpc.0.MEQ18541209.1.STATE").val === false) {
! // 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);
! });Im zweiten Script natürlich auch. Das hm-rpc.0 musst Du natürlich für Dich abändern.
Ich hoffe, Du kannst damit was anfangen…
-
Es funktioniert!!! Hatte das nicht richtig verstanden mit den Datenpunkten :roll:
Allerdings wird es obwohl es funktioniert im Log noch rot. Kannst du daraus was lesen?
2018-03-25 18:35:03.030 - error: javascript.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995703012,"_id":null} 2018-03-25 18:35:03.041 - error: history.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995703012,"_id":null} 2018-03-25 18:35:03.035 - error: admin.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995703012,"_id":null} 2018-03-25 18:35:37.977 - error: admin.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995737973,"_id":null} 2018-03-25 18:35:37.978 - error: history.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995737973,"_id":null} 2018-03-25 18:35:37.985 - error: javascript.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995737973,"_id":null} 2018-03-25 18:39:01.296 - error: admin.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995941292,"_id":null} 2018-03-25 18:39:01.297 - error: history.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995941292,"_id":null} 2018-03-25 18:39:01.299 - error: javascript.0 change ID is empty: {"common":{"enabled":1},"from":"system.adapter.javascript.0","ts":1521995941292,"_id":null} 2018-03-25 18:39:05.650 - error: admin.0 change ID is empty: {"common":{"enabled":0},"from":"system.adapter.javascript.0","ts":1521995945646,"_id":null} 2018-03-25 18:39:05.651 - error: history.0 change ID is empty: {"common":{"enabled":0},"from":"system.adapter.javascript.0","ts":1521995945646,"_id":null} 2018-03-25 18:39:05.653 - error: javascript.0 change ID is empty: {"common":{"enabled":0},"from":"system.adapter.javascript.0","ts"
-
Schau nochmal in den Objekten, ob die Datenpunkte auch geschaltet werden. Die müssen von 0 auf 1 und umgekehrt springen.
Hast Du die auch als Zahl (number) angelegt?
Ansonsten kann vielleicht eumats noch was dazu sagen?
-
Wobei es nicht ratsam ist die Datenpunkte unter ScriptEnabled abzulegen… `
Das ist der Grund…
-
Da das von einige genutzt Skript aus meinen 1. Gehversuchen mit iobroker und HomeKit stammt, war es etwas "verbesserungswürdig".
Daher gibt es hier nun eine etwas modifizierte Variante. Ich hoffe, dass mir beim Zusammenkopieren keine Fehler unterlaufen sind, denn ich persönlich nutze das Ganze noch mit dem Skript VirtualDevices (https://forum.iobroker.net/viewtopic.php?f=21&t=8192). Aber das würde das hier etwas überfrachten…
Es werden nun die Datenpunkte zum Steuern beim Start des Skriptes erzeugt (ggf. muss das Skript beim ersten Mal 2x gestartet werden).
Bei den Variablen "Schalter" und "Sensor" müssen dann die genutzten Aktoren eingefügt werden.
! ````
var Schalter = 'hm-rpc.0.BidCoS-RF.8.PRESS_SHORT',
Sensor = 'hm-rpc.0.KEQ0905365.1.STATE',
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,
oldValue = obj.oldState.val,
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,
oldValue = obj.oldState.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,
oldValue = obj.oldState.val,
StatusSensor = value;timeout = setTimeout(function () { if (StatusSensor === false) { // 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);
});