ioBroker.jarvis
ioBroker.jarvis copied to clipboard
Load custom scripts
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
Stimme für deinen Feature Request ab!
Stimme für deinen Feature Requests ab indem du die Emoticons beim ersten Beitrag als Reaktion nutzt:
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:
Du kannst mittels Custom HTML eigene Javascript laden.
@Zefau Du meinst das Modul CustomHTML?
Jo. Ist nicht genau das, was du meinst, aber wäre eine temporäre Lösung.
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)
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.
Eigene / Custom Scripts nun (mit Pro) mit v3.1.0-alpha.9
verfübar:
Wie kann man dort die bestehende socket-Verbindung mit nutzen, um Daten aus ioBroker-DPs abzufragen?
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)
subscribeState , bzw. die callback() wird dann auch bei Änderung von einem Wert ausgelöst? on()-Funktion? on({id: instanceExImportDP, change: "any"}, function (obj)
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 @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:
Das der Code pro Button:
return "<button type=\'button\' onclick=\'MeineFunktion()\'>Test</button>";
Das das Script im Reiter "Scripts"
Hier ein Beispiel für jsonTable: https://mcuiobroker.gitbook.io/jarvis-infos/jarvis-v3/besonderheiten-v3/scripts-3.1.x-pro/jsontable
@mcuiobroker Danke dir!!!
Leider funktioniert dies nicht. Hast Du eine Idee?
<button type=\"button\" onclick=\"test()\">Test!</button>
setState so gibt es in jarvis nicht->
window.Socket.setState(stateId, value, ack, callback)
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?
F12