Ankündigung

Einklappen
Keine Ankündigung bisher.

Kleines Problem mit fetch_url

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

    Kleines Problem mit fetch_url

    Hallo

    vermutlich sehe ich den Wald vor lauter Bäumen nicht

    Code:
    sh.tools.fetch_url('http://gateway.sms77.io/api/sms?u=user&p=api&to=12345678&text=ALARM')
    funktioniert

    Code:
    sh.tools.fetch_url('http://gateway.sms77.io/api/sms?u=user&p=api&to=12345678&text='+format(sh.Alar manlage.Melder()))
    gibt

    Code:
    2018-04-25 21:54:59 WARNING tools sms Problem fetching [URL="http://gateway.sms77.io/api/sms?u=user&p=api&to=12345678&text=test:"]http://gateway.sms77.io/api/sms?u=us...678&text=test:[/URL] 400 Bad Request -- tools.py:fetch_url:90
    wieder.

    str() statt format() das gleiche. Jemand eine Idee?

    Gruss, Micha
    Zuletzt geändert von bmx; 26.04.2018, 07:35.

    #2
    Hi,

    ich habe es nicht ausprobiert, aber das sollte funktionieren:
    Code:
    sh.tools.fetch_url('http://gateway.sms77.io/api/sms?u=user&p=api&to=12345678&text=[COLOR=#FF8C00]{}[/COLOR]'[COLOR=#FF8C00].[/COLOR]format(sh.Alarmanlage.Melder()))
    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Leider der gleiche Fehler..

      Kommentar


        #4
        ist der String in sh.Alarmanlage.Melder() auch ALARM? Wenn nicht solltest du das wohl noch zur sicherheit URLencoden.

        Statt fetch_url würde ich immer die request API nehmen.
        http://docs.python-requests.org/en/master/

        Vg
        Jürgen
        Zuletzt geändert von heckmannju; 25.04.2018, 22:51.

        Kommentar


          #5
          nimm requests.. zukunftssicherer.. geht von deinem server aus ein wget oder curl auf die url? vielleicht gibt es auch probleme mit der namensauflösung, also auch mal einen einfachen ping probieren..
          Zuletzt geändert von psilo; 26.04.2018, 04:29.

          Kommentar


            #6
            Hallo

            nutze jetzt urllib.request...Fehler bleibt aber:

            Exception: HTTP Error 400: Bad Request
            urllib.request.urlopen('http://gateway.sms77.io/api/sms?u=user&p=2345678&to=123456&text=ALARM{}'.forma t(sh.Alarmanlage.ALARMmelder())).read()


            Wie man sieht, hängt er den Inhalt von sh.Alarmanlage.ALARMmelder() nicht an den String dran..

            Kommentar


              #7
              wie benutzt du den das eval oder script?

              Kommentar


                #8
                nutze es in einem script

                Kommentar


                  #9
                  keine eine Lösung? Hab schon im python Forum gesucht und finde nix. Warum löst es die Variable innerhalb von urlopen() nicht auf? Das muss doch gehen

                  Kommentar


                    #10
                    Kannst Du mal bitte im Backend prüfen, ob da wirklich nirgendwo Leerzeichen sind? Siehe hier ...
                    /tom
                    Zuletzt geändert von Tom Bombadil; 26.04.2018, 17:01.

                    Kommentar


                      #11
                      wie soll ich das prüfen? Ich hatte mal ein _ davor und dahinter gemacht...da war kein Leerzeichen. Aber wie gesagt...er gibt ja im log "urllib.request.urlopen('http://gateway.sms77.io/api/sms?u=user&p=2345678&to=123456&text=ALARM{}'.forma t(sh.Alarmanlage.ALARMmelder())).read()" aus...das sieht so aus als ob sh.Alarmanlage.ALARMmelder() nicht aufgelöst wird..

                      Kommentar


                        #12
                        schon mal mit anderen python string-varianten probiert? bspw mit % oder +?

                        stimmt das item "Alarmanlage.ALARMmelder"? Oben schreibst du "Alarmanlage.Melder()".

                        wie sieht das yaml file dazu aus.

                        Kommentar


                          #13
                          Dann gibt doch einfach Mal den Inhalt vom Item aus..

                          Kommentar


                            #14
                            Keine Chance. Ich bekomme es nicht hin


                            [[alarmmelder]]
                            type = str
                            knx_dpt = 16
                            knx_listen = 7/7/251
                            knx_init = 7/7/251
                            visu_acl = rw


                            test.py

                            import urllib

                            bla = sh.Alarmanlage.alarmmelder()
                            logger.info('-------------->'+bla)
                            site = urllib.request.urlopen('http://gateway.sms77.io/api/sms?u=user&p=12345&to=0049123456&text=ALARM'+bla)
                            content = site.read()
                            site.close()


                            Fehler bleibt:

                            2018-04-26 21:05:06 INFO sms sms -------------->test -- sms.py:<module>:8
                            2018-04-26 21:05:06 INFO _cplogging CP Server Thread-7 192.168.10.10 - admin [26/Apr/2018:21:05:06] "POST /logics.html HTTP/1.1" 200 13063 "http://192.168.10.110:8383/logics.html" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0" -- _cplogging.py:access:285
                            2018-04-26 21:05:06 ERROR scheduler sms Logic: sms, File: /usr/lib/python3.4/urllib/request.py, Line: 579, Method: http_error_default, Exception: HTTP Error 400: Bad Request -- scheduler.py:_task:394
                            Traceback (most recent call last):
                            File "/usr/local/smarthomeNG/lib/scheduler.py", line 382, in _task
                            exec(obj.bytecode)
                            File "/usr/local/smarthomeNG/logics/sms.py", line 9, in <module>
                            site = urllib.request.urlopen('http://gateway.sms77.io/api/sms?u=user&p=12345&to=00491234566&text=ALARM'+bla)
                            File "/usr/lib/python3.4/urllib/request.py", line 153, in urlopen
                            return opener.open(url, data, timeout)
                            File "/usr/lib/python3.4/urllib/request.py", line 461, in open
                            response = meth(req, response)
                            File "/usr/lib/python3.4/urllib/request.py", line 571, in http_response
                            'http', request, response, code, msg, hdrs)
                            File "/usr/lib/python3.4/urllib/request.py", line 499, in error
                            return self._call_chain(*args)
                            File "/usr/lib/python3.4/urllib/request.py", line 433, in _call_chain
                            result = func(*args)
                            File "/usr/lib/python3.4/urllib/request.py", line 579, in http_error_default
                            raise HTTPError(req.full_url, code, msg, hdrs, fp)





                            Kommentar


                              #15
                              Kannst Du mal bitte die gesamte URL in bla schreiben und loggen, idealerweise mit '|' vorn und hinten (logger.info('|'+bla+'|'))? Und bla dann auch in urlopen verwenden, statt den String erst dort zusammenzubasteln?
                              /tom

                              Kommentar

                              Lädt...
                              X