Coder Social home page Coder Social logo

iobroker / iobroker.admin Goto Github PK

View Code? Open in Web Editor NEW
271.0 28.0 78.0 44.8 MB

user interface for configuration and administration

Home Page: https://iobroker.net

License: MIT License

JavaScript 21.37% HTML 0.50% CSS 0.88% Less 1.49% TypeScript 75.76%
iobroker administration configuration monitoring smarthome home-automation

iobroker.admin's Introduction

Logo

ioBroker (windows installer)

NPM version Downloads

NPM

Automate your life!

To install on Linux just run: npx @iobroker/install

To install on Windows: mkdir C:\iobroker && cd C:\iobroker && npx @iobroker/install or use installer

See ioBroker documentation for more information

ioBroker is an integration platform for the Internet of Things, focused on Building Automation, Smart Metering, Ambient Assisted Living, Process Automation, Visualization and Data Logging.

Concept

ioBroker is not just an application, it's more of a concept and a database schema. It offers a very easy way for systems to interoperate. ioBroker defines some common rules for a pair of databases used to exchange data and publish events between different systems.

architecture

Databases

ioBroker uses "in memory" database to hold the data and saves it on disk with reasonable intervals. There are two types of storage:

  • objects (meta/configuration information)
  • states (values)

Objects and states can be stored in "in memory" or in Redis.

Redis is an in-memory key-value data store and also a message broker with publish/subscribe pattern.

It's used to maintain and publish all states of connected systems.

Adapters

Systems are attached to ioBrokers databases via so-called adapters, technically processes running anywhere in the network and connecting all kinds of systems to ioBrokers databases. A connection to ioBrokers databases can be implemented in nearly any programming language on nearly any platform and an adapter can run on any host that is able to reach the databases via ip networking.

See actual list of adapters on iobroker.net

Security

ioBroker is designed to be accessed by trusted adapters inside trusted networks. This means that usually it is not a good idea to expose the ioBroker databases, adapters or any smart home devices directly to the internet or, in general, to an environment where untrusted clients can directly access these network services. Adapters that offer services supposed to be exposed to the internet should be handled with care. You should always activate HTTPS and use valid certificates for web, admin if open it for internet or for example use it with additional security measures like VPN, VLAN and reverse proxies.

Getting Started

Operating System and Hardware

ioBroker.js-controller should run on any hardware and OS that runs Node.js (ARM, x86, Windows, Linux, OSX).

ioBroker spawns a new Node.js process for every adapter instance, so RAM becomes a limiting factor. A single adapter's memory fingerprint is roundabout 10 to 60 MB.

Installation and first steps

Community support

Logos and pictures

All logos are protected by copyright and may not be used without permission.

Please request permission via [email protected]

Logos

License

This module is distributor under the MIT License (MIT). Please notice, that other ioBroker adapters can have different licenses.

The MIT License (MIT)

Copyright (c) 2014-2024 bluefox [email protected], Copyright (c) 2014 hobbyquaker

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

iobroker.admin's People

Contributors

alcalzone avatar apollon77 avatar bondrogeen avatar buzzy1337 avatar deepcoresystem avatar dependabot[bot] avatar dilesoft avatar dobis19 avatar dutchmannl avatar feuer-sturm avatar foxriver76 avatar fredf63 avatar genagl avatar germanbluefox avatar hobbyquaker avatar homoran avatar iobrokertranslator avatar jey-cee avatar klein0r avatar ldittmar81 avatar mcm1957 avatar palmmaniac avatar paul53 avatar schumyhao avatar simatec avatar soef avatar steiger04 avatar unclesamswiss avatar wlan-kabel avatar zalash333 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iobroker.admin's Issues

History charts not working when using web adapter with encryption(HTTPS)

This line appears to force the charts to use HTTP, which fails when using encryption (HTTPS) for the web adapter.

$chart.attr('src', 'http://' + location.hostname + ':' + port + '/' + chart + '/index.html?range=1440&zoom=true&axeX=lines&axeY=inside&_ids=' + encodeURI(id) + '&width=' + ($chart.width() - 50) + '&hoverDetail=true&height=' + ($chart.height() - 50) + '&aggregate=onchange&chartType=step&live=30&instance=' + $('#history-chart-instance').val());

Please make the schema match the current adapter settings.

Einheitliche, optimierte Ansichten

Hallo,

ich habe einmal begonnen die Ansichten im ioBroker.admin einheitlich zu gestalten. Bisher haben da viele Ansichten ein komplett unterschiedliches Aussehen. Es beginnt schon mit unterschiedlichen Tabellenheadern, unterschiedlichen Zeilenhöhen, Schriftgrößen, Buttongrößen usw. Ich habe einmal mit den Ansichten: Adapters, Instances und Objects begonnen. Für Objects habe ich eine zweite, Objects1 benannt. Diese kann nach Abschluss der Arbeiten aber zur Objects-Ansicht werden. Die Arbeit und Tests an diesen drei Ansichten sind noch nicht abgeschlossen. Ich glaube es ist aber schon ein guter Anfang.

Im Anhang einmal Screenshots der genannten drei Ansichten. Der Source ist auf github. Einen Pull request habe ich noch nicht gestellt, da noch nicht alles abgeschlossen ist.

Was hällst du oder ihr von dem Umbau?

Anmerkungen:

  • Es sind sehr viele Kleinigkeiten und Details angepasst, bzw. erweitert worden.
  • Auch wurden einige Dinge vereinfacht oder anders dargestellt.
  • Ich habe die Lib collResizable vaon 1.5 auf Version 1.6 angehoben, da mit der Version einige Fehler behoben wurden.
    Z.B. die dynamische Größenanpassung der fancytree-Tabellen.
  • Einheitliche Zeilenhöhe von derzeit 25px. Kann aber einfach einheitlich angepasst werden.Ich glaube 25px sind ein gutes Mittelmass der bisher verwendeten Höhen.
  • Randabstände und Ellipsis in Tabellen
  • Icon-Größen angepasst, so dass auch sie nicht an den Spalten und Zeilenrändern kleben
  • Sortierung der Adapter Liste.
  • Icons für die unterschiedlichen Adaptergruppen wurden aus Übersichtsgründen entfernt
  • Zu intensive Farben vermieden.
  • mehr oder weniger einheitliche Spaltenüberschriften.
  • Taste F2 in Objects-View zum umbenennen eines Objects eingefügt. Kann auch verwendet werden,
    wenn das Objekt zuvor noch keinen Namen hatte.
  • Einheitliche Buttongröße und Sortierung über den Listen.
  • Eigentlich könnte die Auswahl des Hosts auch weggelassen werden, wenn es nur den lokalen Host gibt.
    Ohne einen weiteren Host ist die Auswahl überflüssig, (müsste noch gemacht werden)
  • Icon-Spalte in der Objects-View entfernt und das Icon in die Spalte Name aufgenommen.
  • Aussehen der Tabs umgestaltet. Moderneres aussehen. Es sollte möglichst keine 3D Elemente mehr
    verwendet werden. Ist nicht mehr zeitgemäß.
  • vieles, vieles mehr.

PS.: Der source muss noch gesäubert werden, da noch sehr viele auskommentierte Stellen enthalten sind.

Gruß, soef

objects
adapters
instances

[v3] On load, nothing happens for 5 seconds

When first opening Admin in the browser, nothing happens for 5 seconds, then the tabs etc. load.

Between 0 and 5s:
vor5

After 5s:
nach5

(Screenshots are bit older but the problem persists in 3.1.5)

Anzeige RAM frei zeigt falschen Wert an

In der Statuszeile der Instanzen-Ansicht wird folgendes gezeigt (beispielhaft):

Insgesamt RAM verbraucht: 169 MB / Frei: 84 MB (4%) [Host: cubietruck - 3 Prozesse]

Allerdings ist die RAM-Frei-Information falsch. Es sollte dort meiner Meinung nach nicht nur der unbenutzte RAM berücksichtigt werden, sondern auch der vom Cache benutzte RAM, weil dieser ja bei Bedarf auch Anwendungen zur Verfügung steht (=available)!

Siehe auch: http://www.linuxatemyram.com/

V 3.1+:

If you switch adapter view to 'Adapter mit Aktualisierungen' and go to another admin tab and come back later, even in the next session, the display shows only 'Adapter mit Aktualisierungen' but the button is not set to red, which means that you believe that there is no adapter displayed!

I raised already once an issue with no adapters displayed but found now that the 'Adapter mit Aktualisierungen' is the reason!

Datenpunkt für admin log

Ist es möglich für das Log des Admins einen eigenen Datenpunkt zu erstellen?
Dort muss ja nicht das komplette Log rein, aber evtl. die letzten 500 Zeilen z.B.

So könnte man das Log auch in der VIS anzeigen wenn man das möchte.

Hilfeseiten der einzelnen Adaptern im ioBroker öffenen

Es wäre cool, wenn die einzelnen Readme-Seiten direkt als Overlay in ioBroker erscheinen würden. Dafür gibt es eine JS Bibliothek, der Markdown in HTML umwandelt:

https://github.com/showdownjs/showdown

Habe es damals im Admin-Neo eingebaut:
https://github.com/ldittmar81/ioBroker.admin-neo/blob/1600165d0a889708fdb2c81f4a5e58c26e837f6d/www/neo-js/admin.js#L1496

Den Readme-Link bekommt man aus io-package:
https://github.com/ldittmar81/ioBroker.admin-neo/blob/master/README.md
muss aber noch entsprechend geändert werden, damit man daraus die Markdowns bekommt:
https://raw.githubusercontent.com/ldittmar81/ioBroker.admin-neo/master/README.md

Das wäre richtig cool! 😎

Wunsch: bessere Visualisierung, auf welchem Host man sich befindet

Ich habe tlw. bis zu drei ioBroker Admin Oberflächen auf (3 Hosts).

Leider passiert es mir zwischendurch, das ich im falschen Host arbeite.

Kann man deutlicher in der Admin-Oberfläche kennzeichnen, auf welchem Host man sich befindet?

Hostname / farblich / ...?

Admin 2.x: Adapterliste lädt nicht mehr nach Update von Adaptern

Im Admin 2.x gibt es Probelm mit der Adapterliste
siehe auch hier oder hier

Es gibt eine Fehleranalyse vom Nutzer fsjoke dazu:
http://forum.iobroker.net/viewtopic.php?p=110633#p110608

Das Problem wird dadurch verursacht, das einige Adapter (Flot 1.7.0, Chromecast 1.4.0, ...) aktualisiert wurden und damit eine andere Titel Eigenschaft bekommen:

"title": {
"en": "Flot Charts",
"de": "Flot-Diagrammen",
"ru": "Графики c Flot",
"pt": "Flot Charts",
"nl": "Flot charts",
"fr": "Graphiques des Flot",
"it": "Grafici Flot",
"es": "Gráficos de Flot",
"pl": "Wykresy Flot"
}

Das versteht adminAdapter.js (in Zeile 665) nicht!
Es glaubt dass title ein string (und kein Objekt) ist und wendet replace an.
Das erzeugt einen Fehler welcher die ganze Prozedur die Adapter zu listen stoppt!

Das Problem tritt wahrscheinlich jetzt mit mehreren Adaptern auf, welche (vermutlich) auf Admin 3.x vorbereitet werden (Flot 1.7.0, chromecast, ...).

Es wäre schön, wenn entweder Admin 3x bald aktiv wird oder es noch einen Patch für Admin 2x gibt.

V 0.5.10, Reiter Objekte: "common.type" verschwindet / Name wird verkürzt

Reiter "Objekte":

  1. Bei Wechsel zwischen den Reitern "allgemein" und "raw" verschwindet common.type, so wie es schon bei Version 0.5.9 mit dem Selektor "type" war. Ohne Selektor (String-Eingabe) passiert dies nicht.
  2. Beim Erstellen eines neuen Objektes unter "javascript.0" und Eingabe des Namen "Test.irgendwas" ist anschließend der Name auf "irgendwas" verkürzt (auch in Version 0.5.9).

[v3] Creating a user also creates an object with empty _id and index

It seems like creating a user in admin-beta (v3) also creates an object with an empty ID which breaks displaying Objects in v2 until it's manually removed from objects.json (it also has an empty index there, too: ","": {...}"
The objects looks like that:

{
  "common": {
    "name": "test4",
    "icon": "",
    "color": false,
    "desc": "",
    "enabled": true
  },
  "from": "system.adapter.admin-beta.0",
  "ts": 1515455118381,
  "_id": "",
  "acl": {
    "object": 1636,
    "owner": "system.user.admin",
    "ownerGroup": "system.group.administrator"
  },
  "native": {}
}

"test4" was the user I created.

A correct system.user.test4 object is also created and according to the timestamp it's created prior to the wrong one.

The log also states:

admin-beta.0 | 2018-01-09 00:53:41.465 | error | change ID is empty: {"common":{"name":"test4","icon":"","color":false,"desc":"","enabled":true},"from":"system.adapter.admin-beta.0","ts":1515455118381,"_id":"","acl":{"object":1636,"owner":"system....

Backup/Restore von Adapter Einstellungen

Im Yahka-Repository gibt es einen Request, Einstellungen zu sichern/wiederherzustellen (jensweigele/ioBroker.yahka#22).
Meiner Meinung nach sollte das in der Admin-Oberfläche implementiert werden.
Ich würde mir das auch mal anschauen und ggfls. einen Pull-Request einreichen. Die Frage ist, auf welcher Quellcode-Basis ich das umsetzen soll.
Für mich sieht es so aus, als gäbe es gerade einen größeren Umbruch was Design/Libraries angeht!?

setState im Reiter "Objekte"

Schön, dass die Datenpunkte nach dem Anlegen im Reiter "Objekte" initialisiert werden, nur leider mit den falschen Werten (immer):
desc: Manually created
val: null

setState erfolgt offenbar zu früh und sollte besser nach that.edit(id) (Zeile 212) eingefügt werden ?

Backup Button in Admin Oberfläche

Ein Button mit dem man einfach ein Backupstarten lkönnte wäre hilfreich, vielleicht auch ein Automatismus, dass immer bevor eine neue Adapterinstanzerstellt wird ein Backup erstellt wird.

Versions Nummer bei Instanzen

Es wäre schön wenn man in der Ansicht der Instanzen bei der Konfigurtion die Versionsnummer des Adapters sehen könnte außerdem wäre ein Link zum dem Adapter Github an der stelle Hilfreich wenn man etwas nachlesen muss

Link to instance on other Host

Node-Red läuft bei mir auf einem 2. Raspi (als slave oder client).
Wenn ich den Link unter Instanzen klicke, komm ich aber auf die IP von der Master-Installation.
Auch auf der Node-Red Lasche die nach der Installation erscheint kommt nichts.

sortOrder or ignoreSortorder

Hi bluefox, the new sort function in the object view uses (if exists) the new "sortOrder" field in the object.common section. If this field exists, it is after folder/entry, the main sorting critera. This applies to the sorting by ID as well as by names. This allows an adapter to determine the display order of its devices, channels, and states, regardless of the sorting.

With config.ignoreSortOrder = true, this behavior can be disabled.

Maybe you can use this info in the documentation for the common-object.

On opening admin do not display adapter list as starting page.

Hallo,

currently the adapter list is the default page which will be opend when admin is opend. Better will be the instance page or a little dashboard like ioBroker.info to have as starting page for admin.
When IOBroker is running the adapter page is needed rather rare. Then I'm more interested into current system state.

Maybe the startpage can be configurable in the admin settings.

Thanks

Daten-Duplizierung bei mehreren Instanzen

Hi,

ich habe eine Admin-Instanz für das Home-Netzwerk ohne Paswort und ohne SSL und eine für externen Zugriff mit Passwort und SSL.

Ich hatte jetzt schon mehrfach das Problem das beim beenden von iobroker (z.B. wegen Updates) ich es danach beim starten immer einer der beiden nicht hochkam weil der Port schon in Benutzung war. Irgendwie wurden wohl die Einstellungen beim beenden (oder neu starten?) auf beiden Adaptern die gleichen waren. Im objects.json war das dann auch so zu finden. Die eine laufende Instanz konnte das aber nicht editieren. Der Dialog bleibt leer.

Wenn man es im objects.json wieder fixt geht danach alles ...

Irgendeine Idee?

fix "create object"

Habe folgende Änderungen in ioBroker.admin vorgenommen und getestet:

"index.html", Zeile 399 eingefügt:

                    <option value="switch"  class="translate">switch</option>

"index.html", Zeile jetzt 402 geändert in:

                    <option value="multi"   class="translate">multi</option>

"words.js", Zeilen 330 bis 337 ersetzt durch:

    "State&nbsp;type":      {"en": "State&nbsp;type",       "de": "Datenpunkttyp",          "ru": "State&nbsp;type"},
    "boolean":              {"en": "boolean",               "de": "Logikwert",              "ru": "Логическая переменная"},
    "switch":               {"en": "switch",                "de": "Schalter",               "ru": "Строка"},
    "string":               {"en": "string",                "de": "Zeichenkette",           "ru": "Строка"},
    "number":               {"en": "number",                "de": "Zahl",                   "ru": "Число"},
    "multi":                {"en": "multistate",            "de": "Werteliste",             "ru": "Перечисление"},
    "array":                {"en": "array",                 "de": "Feld",                   "ru": "Мвссив"},
    "object":               {"en": "object",                "de": "Objekt",                 "ru": "Объект"},
    "mixed":                {"en": "mixed",                 "de": "gemischt",               "ru": "смешанный"},

"adminObjects.js", Zeilen 157 bis 167 ersetzt durch:

                            if (stype == 'boolean') {
                               obj.common.def = false;
                            } else if (stype == 'switch') {
                               obj.common.type = 'boolean';
                               obj.common.def = false;
                               obj.common.states = 'false:no;true:yes';
                            } else if (stype == 'string') {
                                obj.common.def = '';
                            } else if (stype == 'number') {
                                obj.common.min = 0;
                                obj.common.max = 100;
                                obj.common.def = 0;
                                obj.common.unit = '%';
                            } else if (stype == 'multi') {
                                obj.common.type = 'number';

"adminObjects.js", Zeilen jetzt 260 bis 268 ersetzt durch Zeile 260:

                text += '<input type="text" class="object-tab-edit-string" style="width: 100%" 
data-attr="' + attr + '" value="' + object[attr] + '" />';

"admonObjects.js", innerhalb Zeile jetzt 439 geändert:

title="Add new child object to selected parent"

Anmerkung zu Zeile 260: Eine Änderung des Datenpunkttyps in der common-Maske halte ich nicht für sinnvoll. Will man einen anderen Datenpunkttyp, ist Löschen und neu Anlegen die bessere Lösung. Deshalb wäre es gut, wenn type nicht editierbar ist. Von HTML habe ich gar keine Ahnung, weshalb Zeile 260 ein Editierfeld enthält.

Log-Einträge

Im Tab 'Log' werden nur eine begrenzte Anzahl Einträge geladen. Offensichtlich passiert das unabhängig vom Filter. Wenn nun nämlich viele 'debug' Meldungen laufen, kann man im Log trotz filter 'info' nichts sehen.

Tab Scripte / Visual

Das Feld 'Aktiviert' im Tab 'Scripte' ist unübersichtlich. Man kann die 'true' und 'false' nur schlecht unterscheiden. Sinngemäss dem Tab 'Instanzen', wo das Feld 'Aktiviert' mit 'Ja' und 'Nein' einerseits übersetzt und andererseits auch noch farbig 'rot' und 'grün' unterschieden wird.

Display of adapter icons are dependent on network connection to GitHub.com

With GitHub being offline yesterday I recognised that within iobroker.admin the display of icons on the main page didn't work. After some short investigation I recognised that the logos seem to be directly referenced from raw.githubusercontent.com which was also unavailable at the time I loaded my iobroker admin page and thus the display failed. See here:

screenshot_86
screenshot_87

Interestingly the adapter icons on the "Instances" tab were shown correctly.

To me it seems to be valuable to bring up a request to remove all these kind of direct references to GitHub hosted content as

  1. not all iobroker installations might have direct internet access.
  2. the speed of loading the main iobroker.admin pages might get faster if the icons would be referenced locally only.

Wunsch: Datenpunkte unter admin.0 mit Zusatzinfos

Zusätzlich zu den bestehenden Datenpunkte (Anzahl Updates und Update List) wären u.a. folgende Datenpunkte wünschenswert:

  • Anzahl aktivierter Adapter/Instanzen/Prozesse
  • Gesamtspeicherverbrauch
  • Anzahl installierter Instanzen
  • ...

[v3] Cannot edit states when state value is null

An example from the tradfri adapter:
state-null
I set the state values for groups to null when the values of individual lightbulbs don't match. This results in the values to vanish from the objects grid.
In admin v2 I could click the empty cell and enter a new value for the group. In admin v3 this is not possible as there's nothing to click.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.