ScriptGUI early access

Wie man einen Adapter entwickelt, oder wie man debuggen kann.
Benutzeravatar
apollon77
guru
Beiträge: 4163
Registriert: 10.04.2015, 12:27

Re: ScriptGUI early access

Beitrag von apollon77 » 22.08.2017, 09:38

Poste doch mal die Objektproperties von einem funktionierenden Objekt und von einem wo es nicht tut. Kann mir vorstellen das vllt nur ein nicht gesetzter Name o.ä. zu dem undefined führt. Das liesse sich aber einfach fixen indem man den selbst angelegten Objekten die richtigen Properties setzt.

Benutzeravatar
smiling_Jack
Site Admin
Beiträge: 169
Registriert: 18.07.2014, 23:33

Re: ScriptGUI early access

Beitrag von smiling_Jack » 22.08.2017, 21:32

BigBer hat geschrieben:
Eine Baustelle die mich aber momentan am meisten stört ist das man selbst erstellte Objekte in iobroker nicht als Trigger verwenden kann, bekomme hier bei Live Test im rechten Fenster für das Objekt das als Trigger dienen soll undefined. Das Script wird auch nicht ausgeführt. Wenn ich aber ein Trigger eines durch einen Adapter erstellten Objektes (owfs oder z-wave) nehme geht alles wunderbar.

Ist das ein Bug? oder mache ich was beim anlegen eigener Objekte falsch?
Wenn das gefixt würde, wäre ich schon zufrieden :roll:

Habe das gerade mal probiert bei mir ist es kein Proble. Das selbst erstellte Objekt muss allerdings vom Typ ein state sein ;)

BigBer
starter
Beiträge: 25
Registriert: 06.05.2017, 06:01

Re: ScriptGUI early access

Beitrag von BigBer » 31.08.2017, 19:11

Habe das gerade mal probiert bei mir ist es kein Proble. Das selbst erstellte Objekt muss allerdings vom Typ ein state sein
Sorry für die späte Antwort :roll: War mal im Urlaub :roll:

Das mit dem state muss ich mal bei Gelegenheit checken, danke erst mal smiling_Jack

BigBer
starter
Beiträge: 25
Registriert: 06.05.2017, 06:01

Re: ScriptGUI early access

Beitrag von BigBer » 01.09.2017, 07:26

So Habe das mal überprüft
Habe das gerade mal probiert bei mir ist es kein Proble. Das selbst erstellte Objekt muss allerdings vom Typ ein state sein
ist bei mir der fall :(

Hier das Objekt wo es geht
Screenshot (5).png
Hier das Objekt wo es NICHT geht
Screenshot (4).png
Und hier noch mal im script
Screenshot (1).png

Benutzeravatar
apollon77
guru
Beiträge: 4163
Registriert: 10.04.2015, 12:27

Re: ScriptGUI early access

Beitrag von apollon77 » 01.09.2017, 07:42

Poste bitte mal die Objektdefinitonen (Tab "raw")

BigBer
starter
Beiträge: 25
Registriert: 06.05.2017, 06:01

Re: ScriptGUI early access

Beitrag von BigBer » 01.09.2017, 08:02

Ok! Bitteschön
Screenshot (6).png
Screenshot (7).png

BigBer
starter
Beiträge: 25
Registriert: 06.05.2017, 06:01

Re: ScriptGUI early access

Beitrag von BigBer » 01.09.2017, 08:07

Sorry, das 2te Bild noch mal
Screenshot (8).png

Benutzeravatar
AlCalzone
guru
Beiträge: 2054
Registriert: 01.03.2016, 15:16

Re: ScriptGUI early access

Beitrag von AlCalzone » 04.09.2017, 12:43

Zwei Ideen, rein ins Blaue:
1. Dein eigenes Objekt liegt nicht unter einer Adapterinstanz (z.b. javascript.0), das zwave-Objekt schon. Könnte eventuell Probleme machen, das gabs in ähnlicher Form schon mal.

2. Das Objekt muss nur type="state" haben, common.role kann passend gewählt sein. Mir ist hier keine Rolle "state" bekannt => https://github.com/ioBroker/ioBroker/bl ... ject-types
Kann mir aber nicht vorstellen, dass das problematisch ist.
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

BigBer
starter
Beiträge: 25
Registriert: 06.05.2017, 06:01

Re: ScriptGUI early access

Beitrag von BigBer » 05.09.2017, 01:56

2. Das Objekt muss nur type="state" haben, common.role kann passend gewählt sein. Mir ist hier keine Rolle "state" bekannt => https://github.com/ioBroker/ioBroker/bl ... ject-types
Kann mir aber nicht vorstellen, dass das problematisch ist.
Denke auch nicht das es an der Rolle liegt, Habe noch andere Objekte mit anderen common.role da geht es auch nicht. Wie wichtig ist denn die common.role eigentlich? Hatte das bisher so verstanden das es eigentlich nur zum besseren auffinden eines Objektes zu gebrauchen ist. :?

Zwei Ideen, rein ins Blaue:
1. Dein eigenes Objekt liegt nicht unter einer Adapterinstanz (z.b. javascript.0), das zwave-Objekt schon. Könnte eventuell Probleme machen, das gabs in ähnlicher Form schon mal.
Ich denke hier könnte der Hase im Pfeffer liegen :shock: Sämtliche selbst erstellten Objekte liegen über einer Adapterinstanz, also in der Baumhierarchie ganz oben.
Wollte schon lange mal Ordnung da rein bringen, bisher habe ich immer eigene Objekte einfach mit dem +Button oben links angelegt und da landeten sie automatisch in der Obersten Baumhierarchie :? Wie lege ich denn einen Ordner, zb. "Eigene Objekte" unter der javascript.0 instanz an? In diesen Ordner könnte ich ja dann all meine selbst angelegten Objekte erstellen. Am besten noch mit mehreren Unterordnern, passend zum Script oder so.

Danke! für die Hilfe!

Benutzeravatar
AlCalzone
guru
Beiträge: 2054
Registriert: 01.03.2016, 15:16

Re: ScriptGUI early access

Beitrag von AlCalzone » 05.09.2017, 07:24

BigBer hat geschrieben:Wie lege ich denn einen Ordner, zb. "Eigene Objekte" unter der javascript.0 instanz an? In diesen Ordner könnte ich ja dann all meine selbst angelegten Objekte erstellen.
Du musst nur der ID des States beim Anlegen ein Präfix wie "javascript.0.ordnername." voranstellen. Also statt "MeinState" nennst du den "javascript.0.Ordner.MeinState". Oder direkt in einer Fake-Adapterstruktur, z.b. "EigeneObjekte.0.Ordner.MeinState". Die (optische) Struktur legt ioBroker für dich an.
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

BigBer
starter
Beiträge: 25
Registriert: 06.05.2017, 06:01

Re: ScriptGUI early access

Beitrag von BigBer » 06.09.2017, 00:00

So Habe es probiert, es geht :D
Screenshot (9).png
Habe ich das so richtig gemacht?
Screenshot (10).png
@AlCalzone
Gibt es die Möglichkeit bereits erstellte Objekte in einen neuen Ordner zu verschieben? Ohne das ich meine Scripte bzw. Views die diese Objekte verwenden anpassen muss? Hier stimmt ja dann der Pfad zum Objekt nicht mehr. Oder?

Benutzeravatar
AlCalzone
guru
Beiträge: 2054
Registriert: 01.03.2016, 15:16

Re: ScriptGUI early access

Beitrag von AlCalzone » 06.09.2017, 13:12

BigBer hat geschrieben:Habe ich das so richtig gemacht?
Eigene_Objekte soll kein extra State sein. Du willst ja keinen Wert darin speichern, sondern nur in den Objekten darunter.
Es reicht, ein Objekt z.B. "javascript.0.Eigene_Objekte.Test" zu erstellen, ohne dass "javascript.0.Eigene_Objekte" vorher existiert. Der Ordner wird in der Baumstruktur trotzdem angezeigt.
BigBer hat geschrieben:Gibt es die Möglichkeit bereits erstellte Objekte in einen neuen Ordner zu verschieben?
Nicht dass ich wüsste, vielleicht weiß jemand anders mehr.
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

Heikom
Beiträge: 1
Registriert: 24.02.2018, 12:32

Re: ScriptGUI early access

Beitrag von Heikom » 25.02.2018, 14:56

Moin....
nachdem ich durch Zufall gesehen habe, das mein Lieblingstool von CCU.IO nun in ioBroker existiert, habe ich dieses auch gleich installiert.
Laufen tut´s auf einer Virtuellen Maschine:

Operating System: Debian GNU/Linux 9 (stretch)
Kernel: Linux 4.9.0-4-amd64
Architecture: x86-64

Nach anfänglichen Problemen mit dem "Live Test" , habe ich den Adapter "Javascript" und "ScriptGui" neu installiert, was Abhilfe schuf.
Nun bin ich an einen Punkt angekommen, wo ich absolut keinen Anhaltspunkt mehr habe.

Ich benutze im ScriptGui aus der Logic den "Timespan". Nur leider bekomme ich aus dem Log des IO.Broker s eine Fehlermeldung

Javascipt:
Spoiler: Show hidden text
// Force Variablen

// Timeout Variablen

// Blocking Variablen

// CCU.IO Objekte
// Trigger
schedule(" */1 * * * * ", function (data){codebox_1(data); }); //Programm_1
function codebox_1(data){ var string_1_out = "05:00";var string_2_out = "22:00";var now = new Date(); var time1 = new Date(); var time2 = new Date(); var in1 = string_1_out; var in2 = string_2_out; var double1 = in1.split(" "); var double2 = in2.split(" "); var time; var date1; var date2; if (double1[1]) { time = double1[1].split(":"); date1 = double1[0].split("."); date2 = double1[0].split("-"); } else { time = in1.split(":"); date1 = in1.split("."); date2 = in1.split("-"); } if (time.length == 2) { time1.setHours(time[0]); time1.setMinutes(time[1]); } if (time.length == 3) { time1.setHours(time[0]); time1.setMinutes(time[1]); time1.setSeconds(time[2]); } if (date2.length == 3) { if (date2[0].length == 4) { time1.setFullYear(date2[0]); } else { time1.setFullYear("20" + date2[0]); } time1.setMonth(date2[1] - 1); time1.setDate(date2[2]); } if (date1.length == 3) { if (date1[0].length == 4) { time1.setFullYear(date1[2]); } else { time1.setFullYear("20" + date1[2]); } time1.setMonth(date1[1] - 1); time1.setDate(date1[0]); } if (double2[1]) { time = double2[1].split(":"); date1 = double2[0].split("."); date2 = double2[0].split("-"); } else { time = in2.split(":"); date1 = in2.split("."); date2 = in2.split("-"); } if (time.length == 2) { time2.setHours(time[0]); time2.setMinutes(time[1]); } if (time.length == 3) { time2.setHours(time[0]); time2.setMinutes(time[1]); time2.setSeconds(time[2]); } if (date2.length == 3) { if (date2[0].length == 4) { time1.setFullYear(date2[0]); } else { time1.setFullYear("20" + date2[0]); } time2.setMonth(date2[1] - 1); time2.setDate(date2[2]); } if (date1.length == 3) { if (date1[0].length == 4) { time2.setFullYear(date1[2]); } else { time2.setFullYear("20" + date1[2]); } time2.setMonth(date1[1] - 1); time2.setDate(date1[0]); }process.send(time1);process.send(time2); if (time1.valueOf() < now.valueOf() && time2.valueOf() > now.valueOf()) { var timespan_4_out = true; }else{ var timespan_4_out = false; }log("Timespan01 -> Programm_1 -> " + timespan_4_out);};
Fehlermeldung:

javascript.0 2018-02-25 14:24:00.439 error at Object. (script.js.Test_Scripte.Timespan01:10:43)
javascript.0 2018-02-25 14:24:00.439 error at codebox_1 (script.js.Test_Scripte.Timespan01:11:3558)
javascript.0 2018-02-25 14:24:00.436 error Error in callback: ReferenceError: process is not defined
javascript.0 2018-02-25 14:23:00.435 error at Object. (script.js.Test_Scripte.Timespan01:10:43)
javascript.0 2018-02-25 14:23:00.435 error at codebox_1 (script.js.Test_Scripte.Timespan01:11:3558)
javascript.0 2018-02-25 14:23:00.434 error Error in callback: ReferenceError: process is not defined
javascript.0 2018-02-25 14:22:18.435 info script.js.Test_Scripte.Timespan01: registered 0 subscriptions and 1 schedule
javascript.0 2018-02-25 14:22:18.412 info Start javascript script.js.Test_Scripte.Timespan01

Evtl. kann mir jemand weiterhelfen

Heikom
Dateianhänge
Timespan Programm.JPG
Achtung.JPG
Achtung.JPG (21.38 KiB) 183 mal betrachtet

Antworten