ioBroker

~ 0 min
2024-01-08 14:16

Installation:

  • OS: Ubuntu 22 inst.
  • IP konfigurieren
  • CURL installieren: sudo apt install curl
  • NodeJS inst: curl -sLf https://deb.nodesource.com/setup_16.x | sudo -E bash -
    sudo apt-get install -y nodejs
  • IOBroker mit Curl installieren: curl -sLf https://iobroker.net/install.sh | bash -
  • IOBroker starten mit http://[ip-adresse]:8081
  • Auge: Discovery Adapter, Netzwerkscan

Aktualisieren:

  • sudo apt-get update && sudo apt-get dist-upgrade
  • iobroker update
  • iobroker upgrade
  • iobroker stop && iobroker fix -   -> ioBroker Installationsfixer
  • iob nodejs-update - Node.js Update

ioBroker CLI Kommandos: https://iobroker.readthedocs.io/de/latest/basics/cli.html?highlight=json

Backup bzw. Programm umziehen mit Backitup
• Backitup Adapter auf alter und neuer Installation installieren
• History Datenpfad konfigurieren: /opt/iobroker/iobroker-data/history
• je nach Installation min. ioBroker und History Backup auswählen und auf altem und neuem PC einmal ausführen
• /opt/iobroker/backups/ - aktuellstes Backup auf neuen PC an gleiche Stelle übertragen
• auf neuem PC Backup (lokal) wiederherstellen (dauert eine Weile)
• im Idealfall gleiche IP wie Quellgerät nutzen
• alle Instanzen starten
Der Umzug ist fertig.
• Backup: NAS oder Cloud konfigurieren

Grundsätzliches

  • Variablen sind temporär im Speicher. Sie lassen sich nur im selben Script nutzen.
  • Datenpunkte liegen im Objektbaum und können übergreifend genutzt werden. Sie bleiben auch beim ioBroker-Neustart erhalten.
    Eigene User-Datenpunkte liegen in bzw. unter "0_userdata/0/".
    Zu Datenpunkten lassen sich Einheit, Min., Max und Steps definieren.
  • Werte werden vom Programm im Normalfall ohne Bestätigung (bestaetigt=false) gesetzt. (rot)
    Das Gerät erkennt am unbestätigten Wert, dass es eine Aktion ausführen soll
    Nach der Aktion bestätigt das Gerät den Wert. (grün)
    Blockly:
    * Adapter steuern: "steuere ID..." (setzt Ack=fasle)
    * Datenpunkt aktualisieren: "aktualisiere ID.."
  • Datenpunkt JSON: hifreich ist JSON Online-Viewer

VIS Objekte in andere Views kopieren
• funktioniert nicht über das GUI-Menue, dann werden die Objekte immer in der Quell-View eingefügt
• mit Strg-C / Strg-V funktioniert es korrekt

Berechnungen mit Bindings in VIS
HTML-Widget: Datenpunkt einer Variable zuweisen, dann rechnen.
(Der Editor zeigt die Ergebnisse nicht an, erst der View.)
{var1:fronius.1.meter.2.PowerReal_P_Sum;var1/1000} kW

math.Runden mit (2) Nachkommastellen:
{wert:Eigene.0.Timer;parseInt(wert).toFixed(2)}

Wenn-Dann Abfrage:
{wert:Eigene.0.Binding; wert > 5 ? "der Wert ist größer als 5":""}

Gesetzt oder leer - Abfrage:
{wert:Eigene.0.Binding; wert ? "gesetzt" : "leer"}

Wahr-Falsch Abfrage:
{wert:Eigene.0.Binding; wert === "true" ? "wahr" : "falsch"}

If-When-Else Abfrage:
{wert:Eigene.0.Binding; wert > 5 ? "der Wert ist größer als 5" : "der Wert ist kleiner als 5"}

If-AND-If ELSE Abfrage
{wert:Eigene.0.Binding; wert > 5 && wert < 10 ? "der Wert ist größer als 5 oder kleiner als 10":"der Wert liegt nicht im definierten Bereich"}

Farben (rot/grün) bedingungsabhängig setzen
(Bedingung in das Color-Attribut des Widgets setzen)
{wert:Eigene.0.Binding; wert > 5 ? "#ff0000" : "#00ff00"}

Ausgabe Teilstring (Start, Anzahl)
{wert:Eigene.0.Binding; wert.substring(0,4)}

Vollständige Liste: https://github.com/ioBroker/ioBroker.vis#bindings-of-objects
Quellen: https://www.machs-smart.de/iobroker-bindings-farben-berechnungen-abfragen/

Arbeiten mit Blockly:

  • Scripte werden sofort 1x beim Script-Start ausgeführt -> Start über Trigger
  • Funktionen können Logikblöcke zusammen fassen
  • steuere schreibt den neuen Wert mit Bestätigt: false
  • aktualisiere schreibt den neuen Wert mit Bestätigt: true
    1. Ein neuer Workflow wird angestoßen, indem ein Datenpunkt mit Bestätigt = false geschrieben wird
    2. Diese Änderung registriert dann ein Adapter, welcher diesen Datenpunkt “überwacht” (subscribe)
    3. Der Adapter macht daraufhin seine Arbeit und
    4. schreibt danach den Datenpunkt erneut(!!!) / bestätigt den Wert mit einem Update Bestätigt: true
  • "anerkannt ist" meint dieses "Bestätigt"-Flag:

  • Trigger mehrfach aufrufen startet ihn auch mehrfach! Stop Trigger in Schleifen nicht vergessen.
  • Adapter reagieren nur auf unbestätigte Änderungen und bestätigen diese.
    Bestätigte Reaktion des Adapters abfragen: Objekt= wurde aktualisiert, anerkannt ist= Update
  • Nicht überwachte eigene Datenpunkte (ohne Adapter) müssen per "Bestätigter Änderung" gesetzt werden.
    Eigene Datenpunkte per Script bestätigen:
    TRIGGER falls Objekt= wurde geändert, anerkannt ist= Befehl, Aktion= Aktualisiere Objekt mit "Wert" mit Verzögerung 1sek.
    Quelle: https://haus-automatisierung.com/software/iobroker/2021/02/02/iobroker-steuere-aktualisiere-bestaetigt.html

ALEXA Routine steuert ioBroker
1. Routine in Alexa anlegen, Bedingung: gewünschter Steuer-Text, Aktion benutzerdefiniert: Sprachausgabe "stopp"
2. ioBroker/Blockly Script fragt Datenpunkt "alexa/history/summary" ab (Text der Alexa-Routine) und ggf. noch "alexa/hiostory/name" (Echo Device Name)
Quelle: (statisches) Alexa Kommando ohne Cloud (iobroker.net)


meine Adapter:

  • Visualisation  (Community Lizenz kostenlos, wird online geprüft)
  • Javascript / Blockly - Scripting
  • History - Historie-Daten (JSON-basiert, Speicherdauer (1 Jahr), Verzeichnis festlegen)
    oder SQL-Protokollierung - (SQL-DB: MySQL, PostgreSQL, MS-SQL oder SQLite3)
    für beliebige Datenpunkte im Objektbaum aktivierbar
  • Flot - zur grafischen Auswertung der History-Daten
  • Fronius Inverter (fronius.0, fronius.1) - Solar Wechselrichter + SmartMeter
  • Maxx! Cube (maxcube.0) - Heizkörperthermostate
  • Midea und Carrier- Dimstal, Nethome klimageräte
  • Tuya - WLAN Thermometer, Gosund Steckdosen
  • Shelly - Shelly Adapter
  • Alexa 2 - Sprachsteuerung
  • OpenWeatherMap - Wetterpunkte im Objektbaum, lassen sich prima scripten, mit Windstärke und Richtung
  • auch cool: https://www.wetteronline.de/wetter-widget konfigurieren, iFrame Code in manuellen Datenpunkt (Wert) einfügen und per Widget String(unescaped) fertig einbinden

    Liste aller Adapter: http://download.iobroker.net/list.html

    Nach meinem Empfinden Mist:
  • XTerm - Shell-Befehle auf dem ioBroker Host (sinnlos: kein iobroker stop o.ä.)


"Datum-Objekt" - gibt Datum + Zeit im UNIX Timestamp-Format in ms aus.
Man kann direkt damit rechnen und vergleichen.
1 Sekunde = 1.000 ms
1 Minute = 60.000 ms
1 Stunde (60 Minuten) = 3.600.000 ms
1 Tag = 86.400.000 ms

Quellen:

Tests:

  • Dimstal Midea Klimageräte: Adapter: Homebridge Zubehör Manager
  • danach erscheint links im Menue ein neuer Menuepunkt "Homebridge" und Objekte: ham/
  • Homebridge -> midea-air  (https://github.com/hillaliy/homebridge-midea-air)
  • besser geht es über Alexa / Smart-Home-Devices

Test2:
Bei der Siemens Logo8 (S7-Adapter) brauchst du nur bei DB was eintragen.
Du kannst Netzwerk Eingänge und Ausgänge in dein Logo-Programm hinzufügen. Die Adresse die du da einstellst musst du bei den DB eintragen
z.b. Netzwerk Eingang 0.0 --> DB0.0 Typ: bool
usw.

Du kannst auch Ausgänge lesen
Q0 --> db1065.0
Q1 --> db1065.1
Typ: bool

Eingänge
E0 --> db1025.0
E1 --> db1025.1
Typ: bool

Analogwerte schreiben und lesen geht auch.

Links:

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.