Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Projekt]Temperatur aus externen Linux Rechner zu ioBroker senden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

[Projekt]Temperatur aus externen Linux Rechner zu ioBroker senden

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
20 Beiträge 6 Kommentatoren 3.4k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #1

    Hallo,

    angeregt durch aktuelle Threads im Forum http://forum.iobroker.net/viewtopic.php?f=20&t=7999 und http://forum.iobroker.net/viewtopic.php?f=21&t=8054#p84750 zum Thema SimpleAPI habe ich ein eigentlich einfaches Projekt realisiert.

    Übertragung der Prozessor-Temperatur meines XU4 an ioBroker. Der XU4 ist mein Xeoma Server (Videoüberwachung). Es gibt kein ioBroker auf dem XU4.

    <u>Voraussetzungen:</u>

    ioBroker:

    SimpleAPI im Web-Adapter installiert und eingerichtet

    Javascript-Adapter installiert und zweite Instanz (javascript.1) eingerichtet

    VIS zur Visualisierung

    Flot zur Visualisierung in VIS

    XU4 (oder anderer Rechner):

    Linux mit root Rechten

    <u>Vorgehen:</u>

    In ioBroker Javascript ein Script in der Instanz 1 erstellen:

    ! /* Skript zum Einlesen der Xeoma Server Systeminfos ! 14.09.2017 Daten kommen per Simple API vom Server (XU4) ! */ ! const logging = false; const fC = false; ! // Server 1 // Objekte für Systemdaten des XU4 (Daten werden aus dem ARM-Rechner per SimpleAPI an ioBroker gesendet) const idServerTemp = 'javascript.1.Systeminfos.Xeoma.Server.1.Temperatur'; const idServerTemp_input = 'javascript.1.Systeminfos.Xeoma.Server.1.Temperatur_input'; ! createState(idServerTemp_input, 0, fC, { read: true, write: true, name: 'Xeoma Server 1 (XU4) Temperatur', desc: 'Rohwert kommt per SimpleAPI', type: 'number', role: 'temperature', unit: '°C * 1000' }); createState(idServerTemp, 0, fC, { read: true, write: true, name: 'Xeoma Server 1 (XU4) Temperatur', desc: 'umgerechnete Temperatur zu Weiterverwendung', type: 'number', role: 'temperature', unit: '°C', custom: { "influxdb.0": { "enabled": true, "changesOnly": false, "debounce": "", "retention": 63072000 // 2 Jahre } } }); ! on(idServerTemp_input, function(data) { var temp = parseFloat(data.state.val); setState(idServerTemp, temp/1000); if (logging) log('neue Temperatur vom Xeoma Server 1 empfangen: ' + temp/1000 + '°C'); }); !
    Das Skript erstellt zwei Datenpunkte. Einer für die Annahme der Daten vom Server und einer für die aufbereitete Ausgabe.

    In VIS habe ich dann diese Ansicht:
    261_bildschirmfoto_2017-09-14_um_20.02.54.jpg
    Ein Widget ist das justgage - Value & indicator. Es zeigt an, ob der neue Wert im Vergleich zum letzten Wert stagniert, steigt oder sinkt.

    Widgets zum Importieren in VIS (Achtung, recht weit unten auf der Seite):````
    [{"tpl":"tplJustgageValueIndicatorColored","data":{"visibility-cond":"==","visibility-val":1,"equalAfter":"0","balance1":"80","balance2":"100","gestures-offsetX":0,"gestures-offsetY":0,"visibility-oid":"","oid":"javascript.1.Systeminfos.Xeoma.Server.1.Temperatur","unit":"°C","digits":"0","color1":"#00a348","color2":"#f59d00","color3":"#ff0000","html_prepend":"

    XU4 Temperatur

    ","equal":" ≈","up":" ↑","down":" ↓","html_append_singular":"","html_append_plural":"","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"changeBgColor":false,"fullBri":true,"name":"Xeoma Server 1 Temperatur","visibility-groups-action":"hide","is_tdp":"false"},"style":{"left":"271px","top":"1100px","z-index":"25","width":"135px","height":"83px","text-align":"right","font-size":"40px","border-width":"0px","border-style":"solid","border-color":"rgba(200,200,200,0.2)","color":"rgba(250,250,250,1)","background":"","background-color":"rgba(150,150,150,0.5)","padding":"10px"},"widgetSet":"justgage"},{"tpl":"tplIFrame","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","src":"http://192.168.178.38:8082/flot/index.html?relativeEnd=now&range=60&aggregateType=count&aggregateSpan=300&getNull=true&noBorder=noborder&title=Xeoma+Server&titleColor=rgba(250%2C250%2C250%2C1)&titleSize=14px&legend=nw&hoverDetail=true&timeFormat=%25H%3A%25M+%25d.%25m.%25y&l[0][id]=javascript.1.Systeminfos.Xeoma.Server.1.Temperatur&l[0][instance]=influxdb.0&l[0][offset]=0&l[0][color]=%23A7A7A7&l[0][min]=40&l[0][thickness]=2&l[0][unit]=°C&l[0][name]=XU4+Temperatur&l[0][chartType]=steps&l[0][aggregate]=minmax&l[0][ignoreNull]=true&l[0][fill]=0.3&l[0][shadowsize]=0&l[0][afterComma]=0&x_labels_color=rgba(250%2C250%2C250%2C1)&y_labels_color=rgba(250%2C250%2C250%2C1)&useComma=true&timeType=relative&zoom=true&noedit=true&animation=500&live=20&m[0][l]=0&m[0][v]=90&m[0][f]=false&m[0][c]=%23dd5555&m[0][t]=2&m[0]

    =2&m[0][d]=&m[0][p]=l&m[0][py]=&m[0][fc]=%23dd5555&m[0][fs]=","name":"Xeoma
    Server 1 Temperatur Chart","comment":"","class":".invertieren","refreshOnWakeUp":"false","refreshOnViewChange":"false","scrollX":"false","scrollY":"false","seamless":"true","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"90px","top":"1212px","z-index":"20","width":"894px","height":"329px","color":""},"widgetSet":"basic"},{"tpl":"tplFrame","data":{"visibility-cond":"==","visibility-val":1,"title":"Xeoma Serverdaten (alle 20s)","title_color":"rgba(250,250,250,1)","title_top":"18","title_left":"15","header_height":"0","header_color":"green","title_font":"RobotoCondensed-Regular, Futura","title_back":"","name":"Hintergrund Xeoma Server","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"95px","top":"1047px","width":"869px","height":"481px","background":"","background-color":"rgba(80,80,80,0.4)","z-index":"5","border-radius":"0 20px 0 0px","border-style":"none","font-size":"14px","font-family":"","border-width":"","border-color":""},"widgetSet":"basic"}]

    
    ****ARM-Rechner:****
    
    Login per SSH auf dem ARM
    

    ssh root@IPDESRECHNERS

    Root-Passwort eingeben
    
    Wechsel ins Verzeichnis /bin
    

    cd /bin

    
    erstellen des ersten Skriptes in der Datei mit Namen __systeminfo2iobroker.sh__
    

    sudo nano systeminfo2iobroker.sh

    
    Dann dieses Skript im Editor einfügen
    

    #!/bin/bash
    TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
    CORES=$(cat /proc/cpuinfo | grep processor | wc -l)
    LOAD=$(cat /proc/loadavg)
    curl http://192.168.178.38:8082/set/javascript.1.Systeminfos.Xeoma.Server.1.Temperatur_input?value={$TEMP}

    Das Skript ist bereits vorbereitet, später auch die Zahl der Kerne und ggf. den Load zu übertragen. Die IP und der Port sind die Adresse des ioBroker Web-Adapters. Danach kommt der SimpleAPI Aufruf in das oben per Javascript-Adapter erstellte Objekt __javascript.1.Systeminfos.Xeoma.Server.1.Temperatur_input__
    
    Im Editor nun das Skript einkopieren und mit CTRL+O und CTRL+X speichern und schließen.
    
    Die Datei ausführbar machen
    

    sudo chmod +x systeminfo2iobroker.sh

    
    Nun Ausprobieren, ob ein Wert übertragen wird:
    

    ./systeminfo2iobroker.sh

    
    Er erscheint eine Ausgabe des SimpleAPI-Adapters:
    

    {"id":"javascript.1.Systeminfos.Xeoma.Server.1.Temperatur_input","value":67000,"val":67000}

    
    Wenn das geklappt hat, dann kann die zeitliche Steuerung in Angriff genommen werden. Ich habe mich gegen die Cron-Datei entschieden und mache es über ein zweites Skript. Es ruft alle 20s das erste Skript auf.
    
    Erstellen des zweiten Skriptes in der Datei mit Namen __zeitsteuerung.sh__
    

    sudo nano zeitsteuerung.sh

    
    Im Editor nun das Skript einkopieren und mit CTRL+O und CTRL+X speichern und schließen.
    

    while true; do ./systemdata2iobroker.sh; sleep 20; done

    #!/bin/bash
    anzeige="\r\n\r\n+++++++++++++++++++++++\r\nSystemdata2iobroker gestartet\r\nDatenübermittlung per SimpleAPI-Schnittstelle alle 20s...\r\n"
    echo -e $anzeige
    while true; do ./systemdata2iobroker.sh >/dev/null 2>&1; sleep 20; done

    
    Datei mit ausführbar machen
    

    sudo chmod +x zeitsteuerung.sh

    
    Zum Schluss nun das Skript starten, es läfut endlos (bis Neustart des Rechners oder Abbruch des Skriptes; wir befinden uns immernoch im Ordner bin. EIgentlich ist der Pfad aber egal, solange er konsequent in allen Skripten gleich ist)
    

    ./zeitsteuerung.sh

    
    Viel Spaß!
    
    Gruß
    
    Pix
    
    PS:
    
    Meine Fragen an die Experten (ich bin nämlich keiner und hab das hier für die anderen Anfänger gemacht)
    
    - Wie kann ich die wiederholende Ausgabe in der Konsole unterdrücken? Kann ich die Ausgabe in ein NULL-Gerät umleiten? EDIT: Erledigt!
    
    - Wie bringt man das Skript zum Autostart bei Neustart des Rechners?

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Antwort Letzte Antwort
    0
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      @pix:

      • Wie kann ich die wiederholende Ausgabe in der Konsole unterdrücken? Kann ich die Ausgabe in ein NULL-Gerät umleiten? `
        Geht bestimmt, die Syntax hab ich aber nicht im Kopf. Irgendwas ähnlich zu 1&>2 > /dev/null

      @pix:

      • Wie bringt man das Skript zum Autostart bei Neustart des Rechners? `
        Schau dir mal https://github.com/AlCalzone/rpi-http-remote an, im Ordner install ist ein Skript install.sh, das das Programm im Autostart registriert.

      rpi-http-remote.sh definiert den Service und was beim Start passiert (startet node main.js). Ist nicht 100% korrekt (stop-Befehl ist nicht unterstützt), funktioniert aber.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #3

        @AlCalzone:

        pix hat geschrieben:

        • Wie kann ich die wiederholende Ausgabe in der Konsole unterdrücken? Kann ich die Ausgabe in ein NULL-Gerät umleiten?

        Geht bestimmt, die Syntax hab ich aber nicht im Kopf. Irgendwas ähnlich zu 1&>2 > /dev/null `

        Das Funktioniert. Habe die zweite Datei geändert:

        #!/bin/bash
        anzeige="\r\n\r\n+++++++++++++++++++++++\r\nSystemdata2iobroker gestartet\r\nDatenübermittlung per SimpleAPI-Schnittstelle alle 20s...\r\n"
        echo -e $anzeige
        while true; do ./systemdata2iobroker.sh >/dev/null 2>&1; sleep 20; done
        
        

        Autostart tbd

        Gruß

        Pix

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #4

          Hallo pix,

          danke für diese Lösung. Werde ich bald testen.

          Da bist du mir aber zuvor gekommen ;-)

          ich wolle die nächsten Tage so etwas über mqtt ausprobieren, muss mich aber in dieses Thema noch weiter einarbeiten, da ich damit auch erst seit ein paar Tagen kämpfe.

          Gruß

          Rainer

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #5

            Hallo Rainer,

            das Projekt war eine logische Konsequenz: Der Bedarf war da, da ich ständig im Terminal die Temperatur des Odroid prüfe (er ist in einem Regal hinter Büchern verbaut). Die Lösung auch: Ich habe mich gerade mit SimpleAPI beschäftigt und curl kannte ich noch von der CCU1.

            Da ich selbst Neuling in Linux bin, habe ich mal einfach alle Schritte möglichst genau aufgeschrieben. So kann ich es auch selbst nachvollziehen.

            Die nächsten Schritte sind die Übertragung des LOAD, evtl. Speicherplatz, etc.. https://github.com/ioBroker/ioBroker.simple-api#usage biete ja dafür den setBulk-Befehl.

            Die gesamte Aufarbeitung der Rohdaten (Temperaturwert zB 45000 statt 45°C) mache ich lieber in ioBroker Javascript. Da kenne ich mich besser aus.

            Ein mqtt Tutorial für Einsteiger fänd ich übrigens super.

            Gruß

            Pix

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Antwort Letzte Antwort
            0
            • HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #6

              @pix:

              das Projekt war eine logische Konsequenz: Der Bedarf war da `
              und das schon länger. Deswegen war ich ja dran.

              @pix:

              Ein mqtt Tutorial für Einsteiger fänd ich übrigens super. `
              erst mal die Doku für den Adapter.

              Dan war ich wegen der inzwischen wachsenden Userzahl, die nicht von HM kommen, auf der Suche nach einem Einsteigertutorial für non-HM User. Und da musste ich mit ohne Programmierkenntnissen etwas finden, was ich auch testen und dokumentieren kann.

              Da kommen die Arduino/WeMos User oder andererseits ggf. die Broadlink-Teile für eine größere Anzahl Usern in Betracht. Im Hinterkopf hatte ich auch die noch fehlenden Adapterdokus (und die bezahlbare Anschaffung der notwendigen Hardware; mein Goldesel hat schon einen Krampf)

              Und die Auswertung von Hardwaredaten externer Systeme war immer ein Thema im Forum.

              In meiner Naivität denke ich, dass mit mosquitto auf dem SBC und dem MQTT-Adapter auch einiges machbar sein könnte. Ist bei mir aber alles Try and Error bis etwas bei rauskommt.

              Dafür kann ich dann wieder die Probleme von Einsteigern aus erster Hand nachvollziehen ;-)

              Gruß

              Rainer

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                sveni_lee
                schrieb am zuletzt editiert von
                #7

                hallo pix,

                der Tread ist zwar schon etwas älter aber ich habe ich habe mal eine grundstzliche Frage zu deinem Skript.

                Ich habe hier 3 OrangePi zero im Einsatz die unterschiedlichste aufgaben erledigen.

                Da sie Opi zero zu schwach auf der Brust sind 256Mb Ram kann darauf kein iobroker installiert werden.

                Wenn ich das richtig verszanden habe, kann ichmit dem Skript die Temperatur und CPU Load auslesen und per simple API an iobroker senden.

                können damit auch andere Werte übermittelt werden? Ich habe einenn Opi der die Zählerstände mitteld s0-Impulsgeber ausliest und in eine Datei schreibt. Es ist ein einfacher counter der bei jeder Umdrehung der Ferrisscheibe um 1 hochzählt.

                kann ich den Wert der Datei auf dem selben wege an ibroker übertragen?

                1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von
                  #8

                  Hallo,

                  besser spät als nie :lol:

                  Ja, das geht. Wenn du per CLI den Wert aufrufen kannst, dann kannst du die Ausgabe ja auch umleiten.

                  Gruß

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Antwort Letzte Antwort
                  0
                  • S Offline
                    S Offline
                    sveni_lee
                    schrieb am zuletzt editiert von
                    #9

                    danke…

                    ich nutze das ganze schon sehr exessiv... :D

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      pix
                      schrieb am zuletzt editiert von
                      #10

                      Hallo,

                      vielleicht kannst du mir da helfen, den freien Speicher an sda2 eines Odroid (ohne ioBroker) an ioBroker zu senden.

                      Temperaturwerte und Zahl der Kerne (ich weiß, nicht os wichtig) werden alle 20s übertragen.

                      Last und df werden leider nicht übertragen.

                      #!/bin/bash
                      titel="\r\n+++++++++++++++++++++++\r\nSystemdata2iobroker gestartet\r\nDatenübermittlung per SimpleAPI-Schnittstelle alle 20s..."
                      echo -e $titel
                      while true; 
                      do
                      TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
                      CORES=$(cat /proc/cpuinfo | grep processor | wc -l)
                      #LOADS=$(cat /proc/loadavg)
                      #SPACES=$(df -h /dev/sda2)
                      
                      curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Temperatur_input?value={$TEMP} >/dev/null 2>&1; 
                      sleep 3
                      curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Cores_input?value={$CORES} >/dev/null 2>&1; 
                      sleep 3
                      #curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Load_input?value={$LOADS}
                      #sleep 3
                      #curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Sda2_input?value={$SPACES}
                      #sleep 3
                      
                      sleep 20; 
                      done
                      
                      

                      Gruß

                      Pix

                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                      1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        sveni_lee
                        schrieb am zuletzt editiert von
                        #11

                        versuch mal folgendes:

                        read -r device blocks used available use_percent mounted_on < <(df -k | grep /dev/sda2)
                        

                        damit werden alle werte aus der Anzeige den Variablen zugeordnet…

                        IFS=" " read -r l_1min l_5min l_15min _ _ < /proc/loadavg
                        

                        ist das Selbe für loadvag

                        1 Antwort Letzte Antwort
                        0
                        • P Offline
                          P Offline
                          pix
                          schrieb am zuletzt editiert von
                          #12

                          Funktioniert, super!

                          Ich bastele noch etwas weiter, dann kann ich das hier nochmal vorstellen.

                          Vielen Dank.

                          Gruß

                          Pix

                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                          1 Antwort Letzte Antwort
                          0
                          • P Offline
                            P Offline
                            pix
                            schrieb am zuletzt editiert von
                            #13

                            Hallo,

                            hab nun mein Skript fertig, sieht so aus:
                            261_bildschirmfoto_2018-04-18_um_18.56.43.jpg

                            ! IP und Port bitte ersetzen````
                            #!/bin/bash

                            20180418 by pix

                            dank an svenilee

                            while true;
                            do
                            clear
                            tput cup 2 5
                            echo -e "Zeitsteuerung.sh gestartet"
                            tput cup 3 5
                            echo -e "XEOMA Odroid XU4"
                            ##ggf noch IP übermitteln
                            tput cup 4 5
                            tput smul
                            echo -e "Datenübermittlung an ioBroker per SimpleAPI-Schnittstelle alle 20s..."
                            tput rmul

                            Werte einlesen

                            TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
                            temperatur=$((TEMP/1000))
                            CORES=$(cat /proc/cpuinfo | grep processor | wc -l)
                            read -r l_1min l_5min l_15min _ _ < /proc/loadavg
                            read -r device blocks used available use_percent mounted_on < <(df -k | grep /dev/sda2)
                            tput cup 6 5
                            echo -e "Temperatur: " $temperatur "°C"
                            tput cup 7 5
                            echo -e "Kerne: " $CORES
                            tput cup 8 5
                            echo -e "Load 1/5/15min: " $l_1min $l_5min $l_15min
                            tput cup 9 5
                            echo -e "SDA2 mounted on: " $mounted_on
                            tput cup 10 23
                            echo -e $((blocks/(10241024)))"GB Größe ("$blocks" Bytes)"
                            tput cup 11 23
                            echo -e $((used/(1024
                            1024)))"GB benutzt ("$used" Bytes)"
                            tput cup 12 23
                            echo -e $use_percent " benutzt"
                            use_percent_string=$use_percent
                            use_percent_zahl=${use_percent_string%%}
                            tput cup 13 23
                            echo -e $((available/(1024*1024)))"GB frei ("$available" Bytes)"
                            echo -e zahl

                            Werte an ioBroker senden - später ggf. als bulk

                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Temperatur?value={$temperatur} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Cores?value={$CORES} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Load1?value={$l_1min} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Load5?value={$l_5min} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Load15?value={$l_15min} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Sda2.size?value={$blocks} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Sda2.used?value={$used} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Sda2.avail?value={$available} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Sda2.mounted?value={$mounted_on} >/dev/null 2>&1;
                            curl http://IP:PORT/set/javascript.1.Systeminfos.Xeoma.Server.1.Sda2.use?value={$use_percent_zahl} >/dev/null 2>&1;

                            Restzeitanzeige by cfajohnson

                            countdown()
                            (
                            IFS=:
                            set -- $*
                            secs=$(( ${1#0} * 3600 + ${2#0} * 60 + ${3#0} ))
                            while [ $secs -gt 0 ]
                            do
                            sleep 1 &
                            tput cup 16 5

                            Restzeitanzeige by cfajohnson

                            countdown()
                            (
                            IFS=:
                            set -- $*
                            secs=$(( ${1#0} * 3600 + ${2#0} * 60 + ${3#0} ))
                            while [ $secs -gt 0 ]
                            do
                            sleep 1 &
                            tput cup 11 5
                            printf "%02d:%02d:%02d" $((secs/3600)) $(( (secs/60)%60)) $((secs%60))
                            secs=$(( $secs - 1 ))
                            wait
                            done
                            echo
                            )
                            countdown "00:00:20"
                            done

                            
                            Und hier die Gegenseite im ioBroker Javascript Adapter:
                            
                            >! Es ist noch eine Funktion zum Aufrufen einer globalen Funktion zum telegram-Senden eingebaut. Bitte ggf. ignorieren.
                            

                            ! /* Skript zum Einlesen der Xeoma Server Systeminfos
                            ! FYI: Prozent Plattenbelegung kommt als String mit Einheit
                            ! 14.09.2017 Daten kommen per Simple API vom Server (XU4)
                            21.10.2017 Temperatur Überwachung
                            01.01.2018 Lüfter eingepflegt
                            15.04.2018 LOAD, CORES und SPACE eingepflegt
                            18.04.2018 Einzelne Werte werden in Objekte geschrieben
                            Bash-Quellskript fertiggestellt
                            */
                            const logging = true;
                            const fC = true;
                            ! const idLuefter = "hm-rpc.0.KEQ0193137.1.STATE"/Lüfter Flur Anrichte.STATE/;
                            const server = "Xeoma Server 1 (XU4)";
                            const pfad = "javascript." + instance + ".Systeminfos.Xeoma.Server.1.";
                            ! // Meldung
                            function meldung_push (text, titel, prio) {
                            var dienst = 2; // telegram
                            push(dienst, text, titel, prio, "j");
                            }
                            ! // Server 1
                            // Objekte für Systemdaten des XU4 (Daten werden aus dem ARM-Rechner per SimpleAPI an ioBroker gesendet)
                            // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                            // TEMP
                            const idServerTemp = pfad + "Temperatur";
                            createState(idServerTemp, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Temperatur",
                            desc: "umgerechnete Temperatur zur Weiterverwendung",
                            type: "number",
                            role: "temperature",
                            unit: "°C",
                            custom: {
                            "influxdb.0": {
                            "enabled": true,
                            "changesOnly": false,
                            "debounce": "",
                            "retention": 63072000 // 2 Jahre
                            }
                            }
                            });

                            on(idServerTemp, function(data) {
                            if (logging) log("neue Temperatur vom " + server + " empfangen: " + data.state.val + "°C");
                            });

                            ! on({
                            id: idServerTemp,
                            valGt: 89, // größer als 90°C
                            oldValLt: 89, // alter Wert kleiner als 89°C
                            logic: "and"
                            }, function (obj) {
                            var nachricht = "Odroid XU4 Server Temperatur ist im kritischen Bereich: " + obj.state.val + "°C";
                            if (!getState(idLuefter).val ) {
                            setState(idLuefter, true);
                            nachricht += ". Der Lüfter in der Anrichte war aus und wurde nun eingeschaltet";
                            }
                            log(nachricht);
                            meldung_push(nachricht, "ioBroker Warnung", 1);
                            });
                            ! // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                            // LOAD
                            const idServerLoad1 = pfad + "Load1",
                            idServerLoad5 = pfad + "Load5",
                            idServerLoad15 = pfad + "Load15";
                            ! createState(idServerLoad1, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Load1",
                            desc: "/loadavg 1min",
                            type: "number"
                            });
                            createState(idServerLoad5, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Load5",
                            desc: "/loadavg 5min",
                            type: "number"
                            });
                            createState(idServerLoad15, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Load15",
                            desc: "/loadavg 15min",
                            type: "number"
                            });
                            ! on({
                            id: [
                            idServerLoad1,
                            idServerLoad5,
                            idServerLoad15
                            ]
                            }, function(data) {
                            if (logging) log("neuer Load vom " + data.deviceName + " empfangen: " + data.state.val);
                            });
                            ! // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                            // CORES (ändert sich eigentlich nicht)
                            const idServerCores = pfad + "Cores";
                            createState(idServerCores, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Anzahl der Kerne",
                            desc: "cat /proc/cpuinfo",
                            type: "number",
                            min: 0
                            });
                            ! on(idServerCores, function(data) {
                            if (logging) log("neuer Wert Cores vom " + data.deviceName + " empfangen: " + data.state.val);
                            });
                            ! // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                            // SPACE EXT Sda2
                            const idServerSda2_size = pfad + "Sda2.size";
                            const idServerSda2_used = pfad + "Sda2.used";
                            const idServerSda2_avail = pfad + "Sda2.avail";
                            const idServerSda2_use = pfad + "Sda2.use";
                            const idServerSda2_mounted = pfad + "Sda2.mounted";
                            ! createState(idServerSda2_size, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Sda2 Size",
                            desc: "umgerechneter df-Wert zur Weiterverwendung",
                            type: "number",
                            unit: "Bytes"
                            });
                            createState(idServerSda2_used, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Sda2 used",
                            desc: "umgerechneter df-Wert zur Weiterverwendung",
                            type: "number",
                            unit: "Bytes",
                            custom: {
                            "influxdb.0": {
                            "enabled": true,
                            "changesOnly": false,
                            "debounce": "",
                            "retention": 63072000 // 2 Jahre
                            }
                            }
                            });
                            createState(idServerSda2_avail, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Sda2 avail",
                            desc: "umgerechneter df-Wert zur Weiterverwendung",
                            type: "number",
                            unit: "Bytes",
                            custom: {
                            "influxdb.0": {
                            "enabled": true,
                            "changesOnly": false,
                            "debounce": "",
                            "retention": 63072000 // 2 Jahre
                            }
                            }
                            });
                            createState(idServerSda2_use, 0, fC, {
                            read: true,
                            write: true,
                            name: server + " Sda2 Auslastung",
                            desc: "umgerechneter df-Wert zur Weiterverwendung",
                            type: "number",
                            unit: "%",
                            custom: {
                            "influxdb.0": {
                            "enabled": true,
                            "changesOnly": false,
                            "debounce": "",
                            "retention": 63072000 // 2 Jahre
                            }
                            }
                            });
                            createState(idServerSda2_mounted, "", fC, {
                            read: true,
                            write: true,
                            name: server + " Sda2 mounted on (Pfad)",
                            desc: "umgerechneter df-Wert zur Weiterverwendung",
                            type: "string"
                            });
                            ! on({
                            id: [
                            idServerSda2_size,
                            idServerSda2_used,
                            idServerSda2_avail,
                            idServerSda2_use,
                            idServerSda2_mounted
                            ]
                            }, function(data) {
                            if (logging) log("neue Daten vom " + data.deviceName + " empfangen (externe Platte an USB SDA2): " + data.state.val);
                            });
                            ! ````

                            In ioBroker siehts dann so aus:
                            261_bildschirmfoto_2018-04-18_um_18.56.43.jpg

                            Vielen Dank für die Hilfe und Gruß

                            Pix

                            EDIT: fehlendes Bild angehängt

                            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                            1 Antwort Letzte Antwort
                            0
                            • SegwayS Offline
                              SegwayS Offline
                              Segway
                              schrieb am zuletzt editiert von
                              #14

                              @pix:

                              Restzeitanzeige by cfajohnson

                              countdown() `

                              Hallo pix,

                              weisst du warum ich auf einem Pi mit Raspian bei dem befehl````
                              sleep 1 &

                              
                              line 80: syntax error: unexpected end of file

                              Gruß Dirk
                              Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                              1 Antwort Letzte Antwort
                              0
                              • SegwayS Offline
                                SegwayS Offline
                                Segway
                                schrieb am zuletzt editiert von
                                #15

                                Bin jetzt etwas weitergekommen…..habe es allerdings über zwei scripts laufen:

                                1x systeminfo2iobroker und

                                1x zeitscript.sh

                                damit gehts.

                                Ich neige dazu, dass script in die Crontab anzubinden und alle 20 Sek. aufzurufen um in die DB zu speichern.

                                Kann man das systemindo2iobroker.sh auch erweitern für Memory, Voltage, SD Speicherplatz etc. ????

                                Gruß Dirk
                                Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                1 Antwort Letzte Antwort
                                0
                                • SegwayS Offline
                                  SegwayS Offline
                                  Segway
                                  schrieb am zuletzt editiert von
                                  #16

                                  Alles klar … es geht.....nun erweitere ich das Schritt für Schritt :-) Super genial :-)

                                  Gruß Dirk
                                  Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                  1 Antwort Letzte Antwort
                                  0
                                  • SegwayS Offline
                                    SegwayS Offline
                                    Segway
                                    schrieb am zuletzt editiert von
                                    #17

                                    @pix:

                                    In ioBroker siehts dann so aus:

                                    Bildschirmfoto 2018-04-18 um 18.56.43.jpg `

                                    Bei Gelegenheit könnteste du mal schauen, warum die Temperatur OHNE Nachkommastellen vom Pi gesendet wird ? Wenigstens eine Nachkommastelle sollte es ja sein :-)

                                    Gruß Dirk
                                    Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                    1 Antwort Letzte Antwort
                                    0
                                    • Q Offline
                                      Q Offline
                                      Qlink
                                      schrieb am zuletzt editiert von
                                      #18

                                      @Segway

                                      Hast du das Script noch am Laufen ?
                                      Funktioniert das noch ?

                                      Habe ich es richtig verstanden, dass das Script auch für beliebige Raspberrys funktioniert ?

                                      Falls ja, könntest du dein Script für einen Raspberry zur Verfügung stellen ?
                                      Ich möchte nämlich auch von diversen Raspis von mir die Systeminfo an iobroker übermitteln ...

                                      Besten Dank

                                      SegwayS 1 Antwort Letzte Antwort
                                      0
                                      • Q Qlink

                                        @Segway

                                        Hast du das Script noch am Laufen ?
                                        Funktioniert das noch ?

                                        Habe ich es richtig verstanden, dass das Script auch für beliebige Raspberrys funktioniert ?

                                        Falls ja, könntest du dein Script für einen Raspberry zur Verfügung stellen ?
                                        Ich möchte nämlich auch von diversen Raspis von mir die Systeminfo an iobroker übermitteln ...

                                        Besten Dank

                                        SegwayS Offline
                                        SegwayS Offline
                                        Segway
                                        schrieb am zuletzt editiert von
                                        #19

                                        @pix

                                        Kannst du nochmal das Skript einstellen ? Ich selber habe leider meine Skripte nicht mehr da die SD abgetaucht ist und ich nun einige Pis habe, die ich auslesen möchte.

                                        Kannst du das nochmal neu reinstellen ? Irgendwie ist das Skript nicht mehr korrekt dargestellt.

                                        DANKE vorab

                                        Gruß Dirk
                                        Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                                        1 Antwort Letzte Antwort
                                        0
                                        • Q Offline
                                          Q Offline
                                          Qlink
                                          schrieb am zuletzt editiert von
                                          #20

                                          @pix wäre super wenn du dein Script nochmal neu hier posten könntest. Da hats die Formatierung/Darstellung gewaltig über den Haufen geworfen ...

                                          Beste Grüße

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          188

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe