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

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

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    324

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

[Projekt]Temperatur aus externen Linux Rechner zu ioBroker senden

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
20 Beiträge 6 Kommentatoren 3.5k 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.
  • 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

                      694

                      Online

                      32.5k

                      Benutzer

                      81.7k

                      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