ioBroker.jarvis icon indicating copy to clipboard operation
ioBroker.jarvis copied to clipboard

Load custom scripts

Open techducks opened this issue 4 years ago • 11 comments

Hi, in meinen Augen wäre es Sinnvoll, wenn man ein eigenes Javascript laden kann? Realisierbar wäre das zum Beispiel, indem man ein Script aus dem JavaScript-Adapter läd (wird dann im Admin von Jarvis konfiguriert).

Mir ist die Idee bei folgendem Problem gekommen: Ich wollte Jarvis aus dem Internet via Reverse Proxy erreichbar machen. Dem Proxy habe ich dann gesagt, dass er nur ein Redict machen soll, wenn in der URL ein ?key=abc Parameter ist. (Zur Authentifierung) Hat auch geklappt. Das Problem ist nur, dass die Javascripte und CSS Files nicht nachgeladen werden, weil diese in der index.html fest einprogrammiert sind. Mein Browser will sich also die Scripte holen, aber entfernt die Parameter aus der URL.

Also entweder dynamische URLs oder Custom Scripte 😄 ps. ich finde Jarvis richtig geil! Weiter sooo

techducks avatar Dec 23 '20 19:12 techducks

Stimme für deinen Feature Request ab!

Stimme für deinen Feature Requests ab indem du die Emoticons beim ersten Beitrag als Reaktion nutzt: Github Reactions Siehe auch https://forum.iobroker.net/topic/30668/jarvis-v2-0-0-just-another-remarkable-vis/1986


Vote up your Feature Request!

Vote up your feature request by selecting an emoticon on the first post as reaction: Github Reactions

Du kannst mittels Custom HTML eigene Javascript laden.

Zefau avatar Dec 23 '20 19:12 Zefau

@Zefau Du meinst das Modul CustomHTML?

techducks avatar Dec 23 '20 20:12 techducks

Jo. Ist nicht genau das, was du meinst, aber wäre eine temporäre Lösung.

Zefau avatar Dec 23 '20 20:12 Zefau

Ja, ich schaue mal, ob das klappt. Du kannst entscheiden, ob es eventuell mal eingebaut werden soll. Wahrscheinlich ist das für die wenigsten relevant, aber ich würde die Vis jetzt schon gerne via Internet erreichen. (Ohne Basic Auth)

techducks avatar Dec 23 '20 20:12 techducks

Hi,

ich würde gerne in einem JsonTable Widget mit der Format-Option pro Zeile einen Button hinzufügen, der eine Javascript-Funktion aufruft.

Das mit dem Button bekomme ich hin, aber die Funktion wird nicht gefunden obwohl ich sie in einem anderen Widget (HTML) auf der gleichen Seite definiert habe.

Beispiel: format":"val => val = '<button type=\'button\' onclick=\'MeineFunktion("' + val + '")\'>Ausschalten';"

Fehlermeldung: Uncaught ReferenceError: MeineFunktion is not defined at HTMLButtonElement.onclick

Wie kann ich eigene Javascript-Funktionen hinzuladen?

Habe eine Jarvis Pro-Lizenz. Der Adapter ist echt der Hammer. Du machst eine tolle Arbeit. Vielen Dank.

fmranger avatar Feb 18 '22 15:02 fmranger

Eigene / Custom Scripts nun (mit Pro) mit v3.1.0-alpha.9 verfübar:

image

Zefau avatar May 31 '22 21:05 Zefau

Wie kann man dort die bestehende socket-Verbindung mit nutzen, um Daten aus ioBroker-DPs abzufragen?

mcuiobroker avatar Jun 01 '22 03:06 mcuiobroker

ab v3.1.0-alpha.10 via window.Socket, z.B. getState(stateId, callback):

window.Socket.getState('0_userdata.0.boolean', ({ err, state }) => {
   ...
});

Weitere Befehle:

  • getState(stateId, callback)
  • subscribeState(stateId, callback)
  • setState(stateId, value, ack, callback)
  • getObjectView(design, search, params, callback)
  • getObjects(pattern, callback)
  • getObject(id, callback)

Zefau avatar Jun 01 '22 19:06 Zefau

subscribeState , bzw. die callback() wird dann auch bei Änderung von einem Wert ausgelöst? on()-Funktion? on({id: instanceExImportDP, change: "any"}, function (obj)

mcuiobroker avatar Jun 02 '22 17:06 mcuiobroker

subscribeState , bzw. die callback() wird dann auch bei Änderung von einem Wert ausgelöst?

Ja.

on()-Funktion? on({id: instanceExImportDP, change: "any"}, function (obj)

Nicht notwendig.

Zefau avatar Jun 02 '22 19:06 Zefau

@Zefau @mcuiobroker

Ich würde gerne in meiner HTML-Tabelle (welches über StateHtml-Widget in Jarvis dargestellt ist) pro Zeile einen Button darstellen. Dieser Button soll dann Datenpunkte verändern.

<button onclick=\"MeineFunktion()"></button>

Wie kann ich darauf reagieren? Wo kann ich meine Methode

function MeineFunktion() {
    setState("0_userdata.0.bewaesserung.test", false);
}

platzieren?

Kann ich das Script in ioBroker (JS-Script-Adapter) einfügen oder eher in Jarvis im Reiter "Scripts"? Bin ich generell auf dem richtigen Weg?

So sieht mein Formular aus: image

Das der Code pro Button: return "<button type=\'button\' onclick=\'MeineFunktion()\'>Test</button>";

Das das Script im Reiter "Scripts" image

uwe72 avatar Jun 26 '23 19:06 uwe72

Hier ein Beispiel für jsonTable: https://mcuiobroker.gitbook.io/jarvis-infos/jarvis-v3/besonderheiten-v3/scripts-3.1.x-pro/jsontable

mcuiobroker avatar Jun 26 '23 20:06 mcuiobroker

@mcuiobroker Danke dir!!!

Leider funktioniert dies nicht. Hast Du eine Idee?

image

image

<button type=\"button\" onclick=\"test()\">Test!</button>

uwe72 avatar Jun 26 '23 20:06 uwe72

setState so gibt es in jarvis nicht-> window.Socket.setState(stateId, value, ack, callback)

mcuiobroker avatar Jun 26 '23 20:06 mcuiobroker

setState so gibt es in jarvis nicht-> window.Socket.setState(stateId, value, ack, callback)

Hat super funktioniert. Wirklich DANKE!!!!!!

Wo wird eigentlich das Ganze geloggt, wo finde ich die Logausgaben?

image

uwe72 avatar Jun 26 '23 20:06 uwe72

F12

mcuiobroker avatar Jun 26 '23 20:06 mcuiobroker