NEWS
Datenpunkte mit custom erstellen
-
Hallo Zusammen,
ich lasse mir per Script Datenpunkte erstellen und bei Bedarf auch wieder löschen. Nun habe ich gerade probiert, und es funktioniert auch, mir direkt custom "Einstellungen" für z.B. iQontrol mit erstellen zu lassen.
Was passiert eigentlich wenn Jemand kein z.B. iQontrol installiert hat und würde das Script nutzen ? Gibt es dann Fehler ? Kann mann das im Script mit prüfen, ob eine iQontrol Instanz besteht ?
Ich nutze das Script von @Mic zum Datenpunkte erstellen. -
@dslraser sagte in Datenpunkte mit custom erstellen:
Hallo Zusammen,
ich lasse mir per Script Datenpunkte erstellen und bei Bedarf auch wieder löschen. Nun habe ich gerade probiert, und es funktioniert auch, mir direkt custom "Einstellungen" für z.B. iQontrol mit erstellen zu lassen.
Was passiert eigentlich wenn Jemand kein z.B. iQontrol installiert hat und würde das Script nutzen ? Gibt es dann Fehler ? Kann mann das im Script mit prüfen, ob eine iQontrol Instanz besteht ?
Ich nutze das Script von @Mic zum Datenpunkte erstellen.Ob es Fehler gibt hängt sicher davon ab, was das Skript tut. Ich würde das Vorhandensein einer Instanz so prüfen, weiß aber nicht ob es einen 'besseren' Weg gibt.
let instanz_vorhanden = $('system.adapter.iQontrol*').length>0; log(instanz_vorhanden)
-
@fastfoot sagte in Datenpunkte mit custom erstellen:
@dslraser sagte in Datenpunkte mit custom erstellen:
Hallo Zusammen,
ich lasse mir per Script Datenpunkte erstellen und bei Bedarf auch wieder löschen. Nun habe ich gerade probiert, und es funktioniert auch, mir direkt custom "Einstellungen" für z.B. iQontrol mit erstellen zu lassen.
Was passiert eigentlich wenn Jemand kein z.B. iQontrol installiert hat und würde das Script nutzen ? Gibt es dann Fehler ? Kann mann das im Script mit prüfen, ob eine iQontrol Instanz besteht ?
Ich nutze das Script von @Mic zum Datenpunkte erstellen.Ob es Fehler gibt hängt sicher davon ab, was das Skript tut. Ich würde das Vorhandensein einer Instanz so prüfen, weiß aber nicht ob es einen 'besseren' Weg gibt.
let instanz_vorhanden = $('system.adapter.iQontrol*').length>0; log(instanz_vorhanden)
Ich denke, das ist ein guter Weg
Also mit zB mit getObject abfragen, ob system.adapter.iqontrol.x existiert. Hab das auch in einem Adapter.
https://github.com/Mic-M/ioBroker.smartcontrol/blob/f293e84a51263b4212de53ccad11718090d43002/lib/helper.js#L290 -
@Mic sagte in Datenpunkte mit custom erstellen:
@fastfoot sagte in Datenpunkte mit custom erstellen:
let instanz_vorhanden = $('system.adapter.iQontrol*').length>0; log(instanz_vorhanden)
Ich denke, das ist ein guter Weg
Also mit zB mit getObject abfragen, ob system.adapter.iqontrol.x existiert. Hab das auch in einem Adapter.
https://github.com/Mic-M/ioBroker.smartcontrol/blob/f293e84a51263b4212de53ccad11718090d43002/lib/helper.js#L290Das gezeigte ist ein Selektor, getObject() braucht es da nicht. Eigentlich wird hier nur geprüft ob es (System-)Datenpunkte für einen Adapter gibt, man könnte auch direkt den .alive DP prüfen und falls vorhanden mit getState() prüfen ob wahr oder falsch. Interessant wäre evtl noch der .connected
-
@fastfoot
Ich denke ich probiere das morgen mal. Ich habe nur kein Testsystem und wollte nicht unbedingt meine iQontrol Instanz löschen, aber ich kann mir ja mal eine zweite Instanz zum testen anlegen (iQontrol.1) und versuchen auf diese zu prüfen und auch wieder löschen.
Danke für Eure Ideen. -
@dslraser sagte in Datenpunkte mit custom erstellen:
@fastfoot
Ich denke ich probiere das morgen mal. Ich habe nur kein Testsystem und wollte nicht unbedingt meine iQontrol Instanz löschen, aber ich kann mir ja mal eine zweite Instanz zum testen anlegen (iQontrol.1) und versuchen auf diese zu prüfen und auch wieder löschen.
Danke für Eure Ideen.Du musst gar nichts installieren! Bei diesem Test geht es ja erstmal nur darum zu prüfen, ob ein Adapter installiert ist(hier: ob es dafür Datenpunkte gibt). Zum prüfen auf wahr gibtst du einfach einen installierten Adapter an, nach wahl mit oder ohne Instanz also zB
$('system.adapter.ping.0.*')
, zum Prüfen auf falsch reicht doch ein Phantasiename oder eine nicht existierende Instanz. der Selektor verändert ja nichts, es wird nur geprüft -
@fastfoot sagte in Datenpunkte mit custom erstellen:
@Mic sagte in Datenpunkte mit custom erstellen:
@fastfoot sagte in Datenpunkte mit custom erstellen:
let instanz_vorhanden = $('system.adapter.iQontrol*').length>0; log(instanz_vorhanden)
Ich denke, das ist ein guter Weg
Also mit zB mit getObject abfragen, ob system.adapter.iqontrol.x existiert. Hab das auch in einem Adapter.
https://github.com/Mic-M/ioBroker.smartcontrol/blob/f293e84a51263b4212de53ccad11718090d43002/lib/helper.js#L290Das gezeigte ist ein Selektor, getObject() braucht es da nicht. Eigentlich wird hier nur geprüft ob es (System-)Datenpunkte für einen Adapter gibt, man könnte auch direkt den .alive DP prüfen und falls vorhanden mit getState() prüfen ob wahr oder falsch. Interessant wäre evtl noch der .connected
Selektor ist echt unnötig hier, danke für den Hinweis Für's Protokoll, im o.g. Adapter-Code prüfe ich nur auf Existenz, Stichwort hier "isRealAdapter", egal ob der gerade läuft oder nicht:
Ist ansonsten halt die Frage, was man will (use case). Prüfung ob Adapter installiert vs. Prüfung ob Adapter auch gerade läuft vs. Status (gelb/rot/grün), etc.
-
ich mache es jetzt so...
(so reicht mir das und es funktioniert)let iqontrol_vorhanden = 'system.adapter.iqontrol'; //prüfen ob iqontol installiert ist
if (existsObject(iqontrol_vorhanden) && //und hier noch andere Prüfungen