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. Skripten / Logik
  4. Logik zum Abfragen/Schreiben von Werten per REST-API

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    8
    1
    50

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

Logik zum Abfragen/Schreiben von Werten per REST-API

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 3 Kommentatoren 662 Aufrufe 2 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.
  • T Offline
    T Offline
    th3g3ntl3man
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich weiß aktuell nicht genau wie ich meine Logik umsetzen soll...
    Ich habe einen UniPi am laufen welcher mir per REST-API Temperaturen zurückgeben kann. Weiterhin kann ich über die API auch 8 Relays schalten.

    Da ich die Temperaturen und auch Relays in meinen Skripten verwenden möchte, weiß ich aktuell noch nicht genau wie ich das am Besten machen soll...

    Ich hatte vorher Pimatic im Einsatz, das gab es als IoBroker-Adapter und ich konnte in meinen Regeln einfach den Adapter verwenden. Da ich Pimatic grundsätzlich allerdings nicht so toll fande, habe ich mich doch wieder dagegen entschieden und würde das gerne selber per REST anbinden.

    Zum Schluss würde ich gerne auch noch die Relays in meiner Visualisierung (vis) anzeigen (Relay an Ja/Nein?) und schalten können...

    Ich stehe aktuell etwas auf dem Schlauch und würde mich freuen, wenn mir jemand ein paar Denkanstöße geben könnte.

    Beste Grüße und Vielen Dank im Voraus,
    Luk

    paul53P 3 Antworten Letzte Antwort
    0
    • T th3g3ntl3man

      Hallo zusammen,

      ich weiß aktuell nicht genau wie ich meine Logik umsetzen soll...
      Ich habe einen UniPi am laufen welcher mir per REST-API Temperaturen zurückgeben kann. Weiterhin kann ich über die API auch 8 Relays schalten.

      Da ich die Temperaturen und auch Relays in meinen Skripten verwenden möchte, weiß ich aktuell noch nicht genau wie ich das am Besten machen soll...

      Ich hatte vorher Pimatic im Einsatz, das gab es als IoBroker-Adapter und ich konnte in meinen Regeln einfach den Adapter verwenden. Da ich Pimatic grundsätzlich allerdings nicht so toll fande, habe ich mich doch wieder dagegen entschieden und würde das gerne selber per REST anbinden.

      Zum Schluss würde ich gerne auch noch die Relays in meiner Visualisierung (vis) anzeigen (Relay an Ja/Nein?) und schalten können...

      Ich stehe aktuell etwas auf dem Schlauch und würde mich freuen, wenn mir jemand ein paar Denkanstöße geben könnte.

      Beste Grüße und Vielen Dank im Voraus,
      Luk

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @th3g3ntl3man sagte: UniPi am laufen welcher mir per REST-API

      Gibt es eine Beschreibung zur API?

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      T 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @th3g3ntl3man sagte: UniPi am laufen welcher mir per REST-API

        Gibt es eine Beschreibung zur API?

        T Offline
        T Offline
        th3g3ntl3man
        schrieb am zuletzt editiert von
        #3

        @paul53
        Hier ist die Dokumentation der API: https://evok-14.api-docs.io/1.11/

        Also ich hatte mir sowas vorgestellt, dass ich vielleicht ein Skript schreibe, welches mir bspw. alle 30 Sekunden die Werte per API holt und in selbstdefinierte Variablen schreibt, sodass ich diese in weiteren Skripten abfragen kann...

        Wie ich allerdings bspw. die Relays vernünftig in den IOBroker bekomme, sodass ich sie bspw. auch in der Visualisierung anzeigen könnte, weiß ich noch nicht genau, da ich da eigentlich keine zeitliche Versetzung darin haben möchte...

        1 Antwort Letzte Antwort
        0
        • T th3g3ntl3man

          Hallo zusammen,

          ich weiß aktuell nicht genau wie ich meine Logik umsetzen soll...
          Ich habe einen UniPi am laufen welcher mir per REST-API Temperaturen zurückgeben kann. Weiterhin kann ich über die API auch 8 Relays schalten.

          Da ich die Temperaturen und auch Relays in meinen Skripten verwenden möchte, weiß ich aktuell noch nicht genau wie ich das am Besten machen soll...

          Ich hatte vorher Pimatic im Einsatz, das gab es als IoBroker-Adapter und ich konnte in meinen Regeln einfach den Adapter verwenden. Da ich Pimatic grundsätzlich allerdings nicht so toll fande, habe ich mich doch wieder dagegen entschieden und würde das gerne selber per REST anbinden.

          Zum Schluss würde ich gerne auch noch die Relays in meiner Visualisierung (vis) anzeigen (Relay an Ja/Nein?) und schalten können...

          Ich stehe aktuell etwas auf dem Schlauch und würde mich freuen, wenn mir jemand ein paar Denkanstöße geben könnte.

          Beste Grüße und Vielen Dank im Voraus,
          Luk

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @th3g3ntl3man sagte: Da ich die Temperaturen und auch Relays in meinen Skripten verwenden möchte

          Laut Doku mittels "request":

          var options = { method: 'GET',
            url: 'http://your-ip-goes-here:8080/json/ai/%7Bcircuit%7D',
            body: '{}' 
          };
          
          request(options, function (error, response, body) {
            if (error) throw new Error(error);
          
            console.log(body);
          });
          

          Damit erst mal für die Temperaturen testen? Oder sind die Temperaturen über 1wire abzufragen?

          Bild_2022-03-22_201744.png

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          T 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @th3g3ntl3man sagte: Da ich die Temperaturen und auch Relays in meinen Skripten verwenden möchte

            Laut Doku mittels "request":

            var options = { method: 'GET',
              url: 'http://your-ip-goes-here:8080/json/ai/%7Bcircuit%7D',
              body: '{}' 
            };
            
            request(options, function (error, response, body) {
              if (error) throw new Error(error);
            
              console.log(body);
            });
            

            Damit erst mal für die Temperaturen testen? Oder sind die Temperaturen über 1wire abzufragen?

            Bild_2022-03-22_201744.png

            T Offline
            T Offline
            th3g3ntl3man
            schrieb am zuletzt editiert von
            #5

            @paul53
            Vielen Dank schon mal für die schnelle Hilfe!!

            Ich glaube, dass ich kein Problem haben werde, die Skripte an sich zu schreiben, mir geht es eher um den "Best-Practice"-Ansatz.
            Also um das Konzept die Daten zwischen dem IOBroker und dem UniPi sauber zu synchronisieren.

            Ein Beispiel, welches ich aktuell im Kopf habe:

            Skript1: Holt alle Temperaturen des UniPis in einem Intervall von bspw. 30 Sekunden ab.
            Skript2: Holt die Werte der Relays in einem Intervall von ca. 1-2 Sekunden ab, sodass ich diese in meiner Visualisierung direkt anzeigen kann, wenn diese geschaltet werden.
            Skript3-X: Verwendet die Werte von Skript1 und reagiert mit entsprechenden Schaltungen im Homematic etc.

            Ich finde diesen Ansatz allerdings etwas "umständlich"(?) und weiß nicht ob man das vielleicht auch sauberer aufsetzen könnte...
            Zumal weiß ich nicht wie performant das ist alle paar Sekunden die REST-Abfragen durchzuführen...

            AsgothianA 1 Antwort Letzte Antwort
            0
            • T th3g3ntl3man

              Hallo zusammen,

              ich weiß aktuell nicht genau wie ich meine Logik umsetzen soll...
              Ich habe einen UniPi am laufen welcher mir per REST-API Temperaturen zurückgeben kann. Weiterhin kann ich über die API auch 8 Relays schalten.

              Da ich die Temperaturen und auch Relays in meinen Skripten verwenden möchte, weiß ich aktuell noch nicht genau wie ich das am Besten machen soll...

              Ich hatte vorher Pimatic im Einsatz, das gab es als IoBroker-Adapter und ich konnte in meinen Regeln einfach den Adapter verwenden. Da ich Pimatic grundsätzlich allerdings nicht so toll fande, habe ich mich doch wieder dagegen entschieden und würde das gerne selber per REST anbinden.

              Zum Schluss würde ich gerne auch noch die Relays in meiner Visualisierung (vis) anzeigen (Relay an Ja/Nein?) und schalten können...

              Ich stehe aktuell etwas auf dem Schlauch und würde mich freuen, wenn mir jemand ein paar Denkanstöße geben könnte.

              Beste Grüße und Vielen Dank im Voraus,
              Luk

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @th3g3ntl3man sagte: Ich hatte vorher Pimatic im Einsatz

              Wie wurde es damit gemacht (Intervalle)?

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • T th3g3ntl3man

                @paul53
                Vielen Dank schon mal für die schnelle Hilfe!!

                Ich glaube, dass ich kein Problem haben werde, die Skripte an sich zu schreiben, mir geht es eher um den "Best-Practice"-Ansatz.
                Also um das Konzept die Daten zwischen dem IOBroker und dem UniPi sauber zu synchronisieren.

                Ein Beispiel, welches ich aktuell im Kopf habe:

                Skript1: Holt alle Temperaturen des UniPis in einem Intervall von bspw. 30 Sekunden ab.
                Skript2: Holt die Werte der Relays in einem Intervall von ca. 1-2 Sekunden ab, sodass ich diese in meiner Visualisierung direkt anzeigen kann, wenn diese geschaltet werden.
                Skript3-X: Verwendet die Werte von Skript1 und reagiert mit entsprechenden Schaltungen im Homematic etc.

                Ich finde diesen Ansatz allerdings etwas "umständlich"(?) und weiß nicht ob man das vielleicht auch sauberer aufsetzen könnte...
                Zumal weiß ich nicht wie performant das ist alle paar Sekunden die REST-Abfragen durchzuführen...

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von Asgothian
                #7

                @th3g3ntl3man sagte in Logik zum Abfragen/Schreiben von Werten per REST-API:

                @paul53
                Vielen Dank schon mal für die schnelle Hilfe!!

                Ich glaube, dass ich kein Problem haben werde, die Skripte an sich zu schreiben, mir geht es eher um den "Best-Practice"-Ansatz.
                Also um das Konzept die Daten zwischen dem IOBroker und dem UniPi sauber zu synchronisieren.

                Ein Beispiel, welches ich aktuell im Kopf habe:

                Skript1: Holt alle Temperaturen des UniPis in einem Intervall von bspw. 30 Sekunden ab.
                Skript2: Holt die Werte der Relays in einem Intervall von ca. 1-2 Sekunden ab, sodass ich diese in meiner Visualisierung direkt anzeigen kann, wenn diese geschaltet werden.
                Skript3-X: Verwendet die Werte von Skript1 und reagiert mit entsprechenden Schaltungen im Homematic etc.

                Ich finde diesen Ansatz allerdings etwas "umständlich"(?) und weiß nicht ob man das vielleicht auch sauberer aufsetzen könnte...
                Zumal weiß ich nicht wie performant das ist alle paar Sekunden die REST-Abfragen durchzuführen...

                • Sofern das System keine Push Benachrichtigung erlaubt wirst du um eine regelmässige abfrage nicht herum kommen.
                • Ich würde an Stelle von "request" die JS Bibliothek "Axios" (https://www.npmjs.com/package/axios) einsetzen - da kannst du (wie in diesem Beispiel beschrieben) mit async / await arbeiten.
                • um Überlappende Anfragen zu verhindern würde ich die regelmässigen Abfragen nicht über ein Intervall sondern eine sich selber verlängernde Kette von Timeouts lösen:
                var DataTimeout;
                async function getData() {
                      try {
                        const resp = await axios.get('yourlink');
                        // handle your response
                    } catch (err) {
                        // Handle Error Here
                        console.error(err);
                    }
                   DataTimeout = setTimeout(getData, 5000)
                }
                
                getData()
                

                Kritisch sind bei schnellen Abfragen meiner Ansicht nach genau die überlappenden Anfragen, die entstehen können wenn das Netzwerk langsam ist oder der Server zeit benötigt die Anfrage zu beantworten. Ab welchem Intervall das kritisch ist hängt dabei von vielen Faktoren ab so das du das letztendlich wirst ausprobieren müssen.

                Wichtig zu beachten ist in diesem Fall auch das es Sinnvoll sein kann Dir innerhalb des Skriptes eine Schattenkopie der Werte der Datenpunkte zu halten deren Quellen du in so schneller Folge abfragst. Dadurch kannst du das aktualisieren der Datenpunkte im ioBroker auf die Fälle begrenzen wo sich der Status geändert hat. Dieses gibt die Möglichkeit ohne den Haken "alle States bei Start abonnieren" zu arbeiten ohne das beim Eintragen der Werte zeitverzögerungen wegen der Notwendigkeit entstehen auf das Ergebnis von "getState" zu warten.

                Der Ansatz die Aufgaben sauber zu trennen ist meiner Meinung nach sehr sinnvoll:

                • Eine Ebene um die Werte bereitzustellen. (2 in Deinem Fall wegen der unterschiedlichen Intervalle)
                • Eine Ebene um auf die Werte (deren Änderung, Aktualisierung) zu reagieren.

                Das erlaubt es Dir auch für die beiden Ebenen unterschiedliche Logikmaschinen zu benutzen (JS, Blockly, Rules, NodeRed) - Jeweils immer die für die Aufgabe und Dein wissen bestgeeignete.

                A.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                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

                780

                Online

                32.5k

                Benutzer

                81.8k

                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