cURL mit virtuellem Ausgang

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • michael287
    LoxBus Spammer
    • 13.11.2016
    • 366

    #1

    cURL mit virtuellem Ausgang

    Hallo zusammen,

    ich versuche gerade eine API-Schnittstelle aufzurufen, die cURL unterstützt.
    Die Doku des Herstellers sagt dazu Folgendes:

    Code:
    //SetValue Integer mit den Parametern ID = 12345 und Wert = 42
    curl -i -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\": \"2.0\", \"id\": \"0\", \"method\": \"SetValue\", \"params\": [12345, 42]}" http://<mail%40provider.de>:<Passwort>@<IP>:3777/api/
    Dies Vorlage hab ich auch mit der Hilfe des Loxwikis und eines Forenbeitrags von Christian Fenzl und anderen hier versucht auf meinen Bedürfnisse anzupassen, hänge jedoch fest.

    Den virtuellen Ausgang habe ich so konfiguriert:

    Adresse: http://10.1.1.21:3777
    Nach Senden schließen
    Trennzeichen ;

    Ausgangsbefehl:

    Befehl bei ein: http://user:kennwort@10.1.1.21:3777/api/
    HTTP-Erweiterung bei Ein: Content-Type: application/json
    HTTP-Post-Befehl bei Ein: {"jsonrpc": "2.0", "id": "0", "method": "SetValue", "params": [43145, 98]}
    Methode: POST

    Für Tipps und Hilfestellungen wäre ich dankbar!

    Viele Grüße
  • Tico
    Lox Guru
    • 31.08.2016
    • 1035

    #2
    Ich verwende einen anderen JSON-Post mit folgenden Kriterien -

    Virtuelle Ausgabe

    Adresse - http://user:kennwort@10.1.1.21:3777
    Verbindung nach dem Senden schließen - geprüft
    Trennzeichen ;

    Ausgangsbefehl

    Befehl für ON
    Code:
    /api
    HTTP-Erweiterungen für ON
    Code:
    Content-Type: application/json
    HTTP Post Befehl für ON
    Code:
    <v>
    HTTP-Methode für ON - POST

    Das <v> wird in einem Statusblock gebildet. Der TQ-Ausgang des Statusblocks wird dem virtuellen Ausgang zugeführt. Lösen Sie den Statusblock durch ein geeignetes Mittel aus. Probieren Sie ein paar Variationen aus, um zu testen, was funktionieren könnte -

    Code:
    {"jsonrpc":"2.0","id":"0","method":"SetValue","params":[12345,42]}
    oder

    Code:
    {\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"Set Value\",\"params\":[12345,42]}
    Zuletzt geändert von Tico; 05.07.2019, 06:14.
    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

    Kommentar

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11236

      #3
      Achte insbesondere auf @Tico‘s „Adresse“ und „Befehl bei Ein“. Du hast die URL doppelt.
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • christof89
        Lox Guru
        • 29.08.2015
        • 1374

        #4
        Zitat von michael287
        Da stimmt etwas nicht, der Befehl sollte die URL _nicht_ enthalten, sondern nur den "Path".
        Probier mal: /api - als Befehl bei ein.

        Kommentar


        • michael287
          michael287 kommentierte
          Kommentar bearbeiten
          Hatt eich auch alles schon durch probiert. Werde mir jetzt nachmal die Sache mit dem Statusbaustein von weite roben anschauen...
      • michael287
        LoxBus Spammer
        • 13.11.2016
        • 366

        #5
        Hallo nochmal. Zunächst danke für die Tipps.
        Habe nun wirklich alle erdenklichen Varianten durch versucht und komme nicht weiter.

        Auch die Variante von Tico ohne die Backslashes.
        Den virtuellen Ausgang als Analog und digital versucht.

        Warum ich das ganze über einen Status Baustein übergeben muss ist mir auch nicht klar.

        Habe als Beispiel mal die Screenshots angehängt.
        Vielleicht habt ihr noch Ideen...
        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 01-ausgang.png
Ansichten: 2280
Größe: 63,7 KB
ID: 205785Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 03-config.png
Ansichten: 2164
Größe: 34,8 KB
ID: 205786Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 04-status.png
Ansichten: 2160
Größe: 143,8 KB
ID: 205787Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 02-ausgangsbefehl.png
Ansichten: 2197
Größe: 151,6 KB
ID: 205788

        Kommentar

        • michael287
          LoxBus Spammer
          • 13.11.2016
          • 366

          #6
          Ich habe gerade mal noch unter Windows mit der Kommonadozeile den cURL Befehl abgesetzt mit folgendem Ergebnis.
          Sieht für mich eigentlich in Ordnung aus, aber der Schaltzustand am anderen Ende als bei Symcon ändert sich nicht?

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: cmd.png
Ansichten: 2246
Größe: 97,8 KB
ID: 205790

          Kommentar

          • michael287
            LoxBus Spammer
            • 13.11.2016
            • 366

            #7
            Okay, bin etwas weiter, habe jetzt den SetValue Teil als Methode gegen einen neuen Befehl MEF_ShutterMoveDown ersetzt - das funktioniert zumindest schon mal in der Konsole!

            Code:
            curl -i -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\": \"2.0\", \"id\": \"0\", \"method\": \"MEF_ShutterMoveDown\", \"params\": [21153]}" http://user:kennwort@10.1.1.21:3777/api/
            Jetzt versuche ich mich nochmal am virtuellen Ausgang!

            Kommentar

            • Tico
              Lox Guru
              • 31.08.2016
              • 1035

              #8
              Zitat von michael287
              Warum ich das ganze über einen Status Baustein übergeben muss ist mir auch nicht klar.
              Es gibt keinen erklärbaren Grund. Manchmal funktioniert es direkt in der virtuellen Ausgabe. Manchmal funktioniert es im Statusblock.

              Meine Erfahrung ist, dass es im Statusblock zuverlässiger erscheint.
              Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

              Kommentar

              • michael287
                LoxBus Spammer
                • 13.11.2016
                • 366

                #9
                Danke für die Klarstellung.
                dann hoffe ich mal, dass ich es noch irgendwie hin bekomme.

                Kommentar


                • Christian Fenzl
                  Christian Fenzl kommentierte
                  Kommentar bearbeiten
                  Wenn’s mit curl nicht funktioniert, dann musst du erst dieses Thema in den Griff bekommen.
                  Mit den VO‘s zu experimentieren, wenn das Ziel nicht sauber funktioniert, ist 🥳

                • michael287
                  michael287 kommentierte
                  Kommentar bearbeiten
                  Christian mit cURL funktioniert es nun, sie Beitrag #7.
                  Das Ziel sollte also Inbegriff ordnung sein...
                  :-)
              • Tico
                Lox Guru
                • 31.08.2016
                • 1035

                #10
                Versuchen Sie einen zusätzlichen Schrägstrich im Befehl für ON -
                Code:
                /api/
                Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                Kommentar

                • RolandSM
                  Smart Home'r
                  • 04.02.2021
                  • 54

                  #11
                  Hi,
                  hab gerade das gleiche Thema, würde gerne eine Boolean Variable in Symcon auf true setzen.
                  Der CURL Befehl auf der Konsole passt.
                  Mein virtueller Ausgang:
                  Adresse: http://meine%40email.deasswort@192.168.xx.xx:3777
                  Mein Befehl geht auf /api mit Content-Type: application/json
                  den HTTP-Post-Befehl bei Ein hatte ich schon direkt da, auch Testweise mit escapte " und zuletzt über einen Statusblock.
                  Bisher kann ich die Variable nur über die Konsole auf True setzen, nicht aber vom Miniserver.

                  michael287
                  Das ist ja 1:1 mein Thema. Läuft es bei dir nun wie in Post #5 beschrieben?
                  Werd mich morgen nochmal daran versuchen, evtl. habt Ihr noch Ideen?

                  PS... Symcon hat die Email-Adresse als User, bei welcher das @ durch %40 ersetzt werden muss... Nicht dass hier bereits die Ursache liegt?
                  Eine Logging-Möglichkeit hab ich nicht???

                  Kommentar

                  • michael287
                    LoxBus Spammer
                    • 13.11.2016
                    • 366

                    #12
                    RolandSM Ich habe das Thema IPS überhaupt nicht mehr weiter verfolgt.
                    Habe dort dann alles so konfiguriert, dass die Sensoren alles per MQTT an meinen LoxBerry weitergeben und gut ist...

                    Kommentar

                    • RolandSM
                      Smart Home'r
                      • 04.02.2021
                      • 54

                      #13
                      Hallo,

                      michael287
                      Hattest Du es denn mit Hilfe dieses Beitrags und den Tipps zum Laufen gebracht?

                      Tico & Christian Fenzl
                      Ihr hattet ja bereits gute Ansätze gepostet, bisher hat es in meinem Fall aber zu keiner Lösung geführt.

                      Deshalb in diesem Post ein paar mehr Infos über mein Setup:
                      1. Symcon 5.5 vom 13.03.2021 auf einem Debian NAS
                      2. Miniserver Gen 2 im Musterkoffer über LAN im Netzwerk
                      3. Loxone Config 12.0.2.24
                      In Symcon habe ich eine Boolean Variable 12345 angelegt.
                      Mit folgenden Befehlen in meiner Konsole am Desktop PC kann ich die Variablen entsprechend umschalten:
                      Code:
                      curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":"0","method":"SetValue","params":[12345,true]}' http://MEINE%40EMAIL.DE:MEINPASSWORT@192.168.178.XXX:3777/api/
                      Nun zur Loxone-Config:
                      1. Ich hab mal einen virtuellen Ausgang mit folgenden Parametern erstellt, die nicht genannten Parameter sind unverändert...
                        1. Bezeichnung: Symcon
                        2. Raum: Zentral
                        3. Adresse: http://meine%40email.de:MEINPASSWORT...68.178.XX:3777
                        4. Verbindung nach Senden schließen: checked (Standard)
                        5. Trennzeichen: ; (Standard)
                      2. 1. virtueller Ausgangsbefehl:
                        1. Bezeichnung: Rollo Test 1
                        2. Kategorie: Beschattung
                        3. Raum: Zentral
                        4. Befehl für EIN: /api
                        5. HTTP-Erweiterung bei EIN: Content-Type: application/json
                        6. HTTP-Post-Befehl bei EIN: {"jsonrpc":"2.0","id":"0","method":"SetValue","par ams":[12345,true]}
                        7. HTTP Methode bei EIN: Post
                        8. Befehl für AUS: /api
                        9. HTTP-Erweiterung bei AUS: Content-Type: application/json
                        10. HTTP-Post-Befehl bei AUS: {"jsonrpc":"2.0","id":"0","method":"SetValue","par ams":[12345,false]}
                        11. HTTP Methode bei AUS: Post
                        12. Als Digitalausgang verwenden: checked (Standard)
                      3. 2. virtueller Ausgangsbefehl:
                        1. Bezeichnung: Rollo Test 2
                        2. Kategorie: Beschattung
                        3. Raum: Zentral
                        4. Befehl für EIN: /api
                        5. HTTP-Erweiterung bei EIN: Content-Type: application/json
                        6. HTTP-Post-Befehl bei EIN: <v>
                        7. HTTP Methode bei EIN: Post
                        8. Befehl für AUS: /api
                        9. HTTP-Erweiterung bei AUS: Content-Type: application/json
                        10. HTTP-Post-Befehl bei AUS: <v>
                        11. HTTP Methode bei AUS: Post
                        12. Als Digitalausgang verwenden: checked (Standard)
                      Und hier noch zuletzt ein Bild des Programms, ich habe bisher immer über die Simulation getestet, 2x hatte ich die entsprechenden Schalter/Tastereingänge überprüft:
                      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: loxone-beitrag.png
Ansichten: 1651
Größe: 49,3 KB
ID: 298193

                      Beide Varianten funktionieren bei mir nicht...

                      LG

                      Kommentar

                      • Christian Fenzl
                        Lebende Foren Legende
                        • 31.08.2015
                        • 11236

                        #14
                        Befehl bei EIN und AUS ist nicht gleich wie in deinem CURL-Aufruf.
                        Sonst schaut alles ganz gut aus.
                        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                        Kommentar

                        • RolandSM
                          Smart Home'r
                          • 04.02.2021
                          • 54

                          #15
                          Hi,

                          meinst du das versehentliche Leerzeichen in Params? Ist ein Tippfehler...

                          Ja ich find auch nicht den Grund warum das nicht klappt?

                          Lg

                          Kommentar


                          • Christian Fenzl
                            Christian Fenzl kommentierte
                            Kommentar bearbeiten
                            ??
                            Hab ich nicht geschrieben!

                            /api /api/
                        Lädt...