Ankündigung

Einklappen
Keine Ankündigung bisher.

network plugin "http Request" senden an Mobotix

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    network plugin "http Request" senden an Mobotix

    Hallo Kollegen,

    mit dem IE Browser kann ich folgenden Befehl per "http Request" senden:

    Code:
    http://192.168.178.xx/control/control?set&section=text&print=Klingel 1
    ( 192.168.178.xx ist eine Mobotix Cam )

    Wenn ich den Befehl - jetzt - mit SH über ein item senden will, kann ich das so machen??

    nw_udp_send = 192.168.178.36:8000=control/control?set&section=text&print=udp_1

    oder
    nw_tcp_send = 192.168.178.36:8000=control/control?set&section=text&print=tcp_1

    Danke, Jochen
    Zuletzt geändert von Haiphong; 20.07.2016, 11:10.
    Gruß, JG

    #2
    Hi,
    ich glaube nicht das das über das NW Plugin geht das kann glaube ich nur TCP und UDP senden und http empfangen. In dem besipiel von dir willst du was über http (get) senden.

    Viele Grüsse
    Jürgen

    Kommentar


      #3
      Würde es eventuell so gehen ??

      item
      Code:
      [netzwerk]
      
         [[nachricht]]
         name = netzwerk_Nachricht
      
            [[[send]]]
      
                   [[[[fetch]]]]
                      type = str
                      nw = yes
                      visu_acl=rw
                      eval = sh.tools.fetch_url('http://192.168.178.x6/control/control?set&section=text&print=fetch 1&user=xxxx&pwd=xxxx')
      Inder Log steht dann
      Code:
      2016-07-20 15:46:30 WARNING netzwerk.nachricht.send.fetch-eval Problem fetching http://192.168.178.x6/control/control?set&section=text&print=fetch 1&user=xxxx&pwd=xxxx: 400 Bad Request
      
      2016-07-20 15:46:30 WARNING netzwerk.nachricht.send.fetch-eval Item netzwerk.nachricht.send.fetch: value False does not match type str. Via Visu 192.168.178.x1:54207
      Hier steht etwas dazu:
      https://knx-user-forum.de/forum/supp...us-eines-items
      Zuletzt geändert von Haiphong; 20.07.2016, 14:58.
      Gruß, JG

      Kommentar


        #4
        stimmt die URL (einfach mal im Browser testen) Fehlercode 400 bedeutet, dass der Server mit Deiner Anfrage nichts anfangen kann. fetch_url gibt dann False zurück, wenn der Status nicht 200 ist.

        Kommentar


          #5
          Evtl. ist der Leerschlag in der URL das Problem.
          Versuch mal den Leerschlag durch + oder alternativ durch %20 zu ersetzen.

          Kommentar


            #6
            Erkannt / beseitigte Problem von "sh.tools.fetch_url()" :

            - das item" [[[[fetch2n]]]] " darf keinen "_" beinhalten ( wie z.B [[[[fetch2_n]]]] )
            - der Port muß angegeben werden

            Noch nicht gelöst:
            - ist der item type "type = str" kommt Fehler "value False does not match type str. Via Visu "
            - ist der item type "type = bool" kommt der Fehler "value b'OK\n' does not match type bool" ( Befehl senden geht aber )
            - ist der item type "type = num" kommt der Fehler "value b'OK\n' does not match type num" ( Befehl senden geht aber )
            - Muß der zu sendende Text "print=fetch1n" eventuell anders eingefügt werden ???
            ( "fetch1n" = ist ein Versuchstext der in das Bild eingebelndet wird )

            Lt. SH Wiki muß User / Passwort wie folgt mitgegeben werden:
            Befehl senden funktionier, trotz Fehlermeldung:
            HTML-Code:
            eval = sh.tools.fetch_url('http://192.168.178.36/admin/rcontrol?action=userclick','user', 'passwort')
            Fehlermeldung SH
            HTML-Code:
            2016-07-20 22:11:02 WARNING netzwerk.nachricht.send.userclick2pe-eval Item netzwerk.nachricht.send.userclick2pe: value b'OK\n' does not match type bool.
            Text senden fuktioniert nicht
            HTML-Code:
            eval = sh.tools.fetch_url('http://192.168.178.x6:8000/control/control?set&section=text&print=fetch2n','user', 'passwort')
            Fehlermeldung SH:
            HTML-Code:
            2016-07-20 19:12:04 WARNING netzwerk.nachricht.send.fetch2n-eval Item netzwerk.nachricht.send.fetch2n: problem evaluating sh.tools.fetch_url('http://192.168.178.x6:8000/control/control?set&section=text&print=fetch2n','user', 'passwort'): timed out

            Lt. Mobotix muß User / Passwort wie folgt mitgegeben werden:
            - funktioniert auch mit "Chrome Browser"
            - funktioniert nicht mit "IE-Browser"
            Texteinblendung senden
            HTML-Code:
            eval = sh.tools.fetch_url('http://user:passwort@192.168.178.x6:8000/control/control?set&section=text&print=fetch1n')
            Fehlermeldung SH:
            HTML-Code:
            2016-07-20 19:12:00 WARNING netzwerk.nachricht.send.fetch1n-eval Problem fetching http://glaab:corally@192.168.178.x6:8000/control/control?set&section=text&print=fetch1n: [Errno -2] Name or service not known
            Befehl senden - ohne Text -
            HTML-Code:
            eval = sh.tools.fetch_url('http://user:passwort@192.168.178.x6/admin/rcontrol?action=userclick')
            Fehlermeldung SH:
            HTML-Code:
            2016-07-20 21:35:16 WARNING netzwerk.nachricht.send.userclick-eval Item netzwerk.nachricht.send.userclick: problem evaluating sh.tools.fetch_url('http://user:passwort@192.168.178.36/admin/rcontrol?action=userclick'): nonnumeric port: 'passwort@192.168.178.x6'


            Wenn Ihr eine Idee habt, bitte melden.

            Danke, Gruß Jochen
            Zuletzt geändert von Haiphong; 20.07.2016, 21:33.
            Gruß, JG

            Kommentar


              #7
              Zitat von Haiphong Beitrag anzeigen
              - der item type muß "type = num" sein, sonst kommt Fehler "value False does not match type str. Via Visu "
              Der type str wäre schon richtig. Wenn das fetch funktioniert, wird ja gemäss dem SH Wiki ein String zurück gegeben.
              Beim value "False" müsste der type wenn bool sein. "num" funktioniert zwar auch, weil dies automatisch umgewandelt werden kann, ist aber nicht ganz korrekt.

              Zitat von Haiphong Beitrag anzeigen
              - der Port muß angegeben werden
              Dies gilt nur, weil es nicht der Standardport 80 ist.

              Zitat von Haiphong Beitrag anzeigen
              sh.tools.fetch_url('http://192.168.178.x6:8000/control/control?set&section=text&print=fetch2n','user', 'passwort'): timed out
              Das x in der IP ist ganz bestimmt falsch.

              Wahrscheinlich funktioniert also folgendes, falls keine weiteren Fehler in der URL sind.
              Code:
              sh.tools.fetch_url('http://192.168.178.[B]3[/B]6:8000/control/control?set&section=text&print=fetch2n','user', 'passwort')

              Kommentar


                #8
                Hallo Stefan,

                danke für Deine Antwort....

                Dann werde ich den Datentyp "type = str" im item noch einmal testen. ( beim senden Befehl )

                Offene Punkte:
                - Senden einer Texteinblendung "print=fetch2n" ist mir ein Rätsel.
                Muß das "fetch2n" eventuell in Klammern ( wie z.B. {fetch2n} ) - oder so ähnlich stehen?
                - Status item zurücksetzen. ( sollte zeitnah erfolgen )
                Senden - Befehl senden - geht nur bei jedem zweiten Tastendruck in Visu.

                Das "x" steht in der IP, weil ich hier nicht die echte IP schreiben wollte.

                Danke, Gruß Jochen
                Zuletzt geändert von Haiphong; 21.07.2016, 11:00.
                Gruß, JG

                Kommentar


                  #9
                  Also eben getestet:

                  Unabhängig ob der Datentyp vom item "num" oder "str" ist, ist der Wert des item "0" oder "1" in der Visu.
                  Im Browser wäre der Rückgabewert immer "OK"

                  Der Datentyp "str" erzeugt folgenden Log-Eintrag:
                  HTML-Code:
                  2016-07-21 12:30:23 WARNING netzwerk.nachricht.send.userclick2pestr-eval Item netzwerk.nachricht.send.userclick2pestr: value b'OK\n' does not match type str. Via Visu 192.168.178.41:34309
                  Der Datentyp "num" erzeugt folgenden Log-Eintrag:
                  HTML-Code:
                  2016-07-21 12:31:42 WARNING netzwerk.nachricht.send.userclick2penum-eval Item netzwerk.nachricht.send.userclick2penum: value b'OK\n' does not match type num. Via Visu 192.168.178.41:34309
                  Gruß, JG

                  Kommentar


                    #10

                    Zitat von Haiphong Beitrag anzeigen
                    HTML-Code:
                    value b'OK\n' does not match type str
                    Ich habe nachgeschaut und gesehen, dass der Rückgabewert von fetch_url vom Typ bytes ist.
                    Du kannst type = foo nehmen - dann wird nicht validiert und es kommt keine Warning.

                    Dich interessiert ja nicht eigentlich die abgerufene Website sondern du willst einfach mit dem Request etwas anstossen.
                    Und dies funktioniert anscheinend richtig, da du ja die Anwtort vom Webserver deiner Kamera erhälst.

                    Zitat von Haiphong Beitrag anzeigen
                    Unabhängig ob der Datentyp vom item "num" oder "str" ist, ist der Wert des item "0" oder "1" in der Visu.
                    Welches Widget nutzt du denn in der Visu? Und um welche Visu geht es eigentlich? smartVISU?
                    Und was erwartest du denn, dass angezeigt wird? Der Rückgabewert des HTTP Requests - also "OK"?

                    Zitat von Haiphong Beitrag anzeigen
                    Muß das "fetch2n" eventuell in Klammern ( wie z.B. {fetch2n} ) - oder so ähnlich stehen?
                    Dies hängt von Mobotix ab. Gemäss dieser Dokumentation stimmt aber print=fetch2n schon.
                    Wenn dieser Text dynamisch aus einem Item gebildet werden soll, sieht es natürlich anders aus.

                    Zitat von Haiphong Beitrag anzeigen
                    Das "x" steht in der IP, weil ich hier nicht die echte IP schreiben wollte.
                    Es handelt sich um eine IP in deinem privaten LAN - da gibt es keine Gefahr, wenn du die echte IP nennst.
                    Zuletzt geändert von smai; 21.07.2016, 12:35.

                    Kommentar


                      #11
                      Getestete item Datentypen:
                      - "str" , Log Eintrag: "value b'print=textstr\n' does not match type str"
                      - "num"
                      - "foo" , kein Log-Eintrag

                      Das item hat in der
                      - SamartVisu
                      - basic.value
                      immer den Wert "0" oder "1"

                      Senden von Text Bildeinblendungen funktioniert
                      - Klammern "{}" haben keinen Einfluß ( werden als Text mit gesendet )

                      HTML-Code:
                      eval = sh.tools.fetch_url('http://192.168.178.36/control/control?set&section=text&print=textstrfoo','user', 'passwort')
                      gesendet wird immer, egal ob sich der Wert
                      von "0" auf "1" ändert oder,
                      von "1" auf "0" ändert
                      Zuletzt geändert von Haiphong; 21.07.2016, 13:39.
                      Gruß, JG

                      Kommentar


                        #12
                        Dann scheint ja nun zu funktionieren, was du brauchst.
                        In der smartVISU müsste imho korrekterweise "OK" erscheinen - allerdings weiss ich nicht, was smarthome.py und die smartVISU mit dem bytes-Typ genau anstellen.

                        Aber wie erwähnt macht es ja auch keinen Sinn, dieses Item und damit den Rückgabewert deines HTTP-Request auf der Visu anzuzeigen.
                        Dieser ist ja konstant "OK", da der Wert des Items nie auf etwas anderes geändert wird.

                        Kommentar


                          #13
                          Ich buddel mal diesen alten Thread wieder aus. Kann man HTTP-Befehle wie

                          http://<espeasyip>/control?cmd=GPIO,12,1
                          http://<espeasyip>/control?cmd=GPIO,12,0

                          mittlerweile auch über die Webservices rausfeuern, oder läuft das weiterhin ausschließlich über fetch_url in einem eval?

                          /tom

                          Kommentar


                            #14
                            mittlerweile auch über die Webservices rausfeuern
                            Das Webservices Plugin stellt eine API zum Zugriff auf Items und eines Tages vielleicht auch mal Logiken dar. Es ist also nur in Richtung SHNG gedacht. In die Gegenrichtung kannst Du Requests verwenden, oder halt klassisch via fetch_url.

                            Kommentar


                              #15
                              Danke! Auf requests bin ich auch schon gestoßen - dann nehm ich halt das.

                              /tom

                              Kommentar

                              Lädt...
                              X