Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Ergebnis von sh.tools.fetch_url in Logik auswerten?

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

    - √ - Ergebnis von sh.tools.fetch_url in Logik auswerten?

    Hallo,

    ich versuche mich gerade an einer Logik die eine FritzDect Steckdose auf vorhandensein überprüft und wenn ein Fehler anstatt einer 1 oder 0 kommt eine Meldung ausgibt.

    Mit fetch_url() kommt ja etwas im Debugger raus, wie kann ich denn sowas in einer Logik auswerten?

    So funktionierts auf alle fälle nicht, aber vielleicht wirds klarer worauf ich hinaus will.
    Code:
    if sh.tools.fetch_url(http://192.168.0.1/webservices/homeautoswitch.lua?switchcmd=getswitchstate&sid=5f6b4b2116580952&ain=01234567) == "400 Bad Request":
    		sh.whatsapp("Allgemeinstrom kein Saft", "4912345")
    Also ich weis das 400 Bad Request rauskommt wenn die Dose ausfällt, aber ich hab keine Ahnung wie ich das dann anwenden kann.

    Ist bestimmt wieder eine Kleinigkeit aber ich komm einfach nicht drauf.

    Also nicht gleich hauen (auch wenns verdient wäre)

    Danksche im Voraus

    Gruß Wolfi

    #2
    Geh einfach mal in den interaktiven Modus (sh.py mit -i starten) und gib dort den Befehl:

    Code:
    sh.tools.fetch_url(http://192.168.0.1/webservices/homeautoswitch.lua?switchcmd=getswitchstate&sid=5f6b4b2116580952&ain=01234567)
    ein. Dann siehst du, was da zurück kommt. Evtl. bringt dich das weiter.
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    Kommentar


      #3
      Zitat von 2ndsky Beitrag anzeigen
      Geh einfach mal in den interaktiven Modus (sh.py mit -i starten) und gib dort den Befehl:

      Code:
      sh.tools.fetch_url(http://192.168.0.1/webservices/homeautoswitch.lua?switchcmd=getswitchstate&sid=5f6b4b2116580952&ain=01234567)
      ein. Dann siehst du, was da zurück kommt. Evtl. bringt dich das weiter.
      Nene da haste mich falsch verstanden.

      Ich weis ja was zurück kommt.

      Aber ich möchte das was zurückkommt ja verwerten.

      Also bei 400 Bad request, soll er eine nachricht schicken.
      Wenn Bad request kommt weis ich das die Steckdose keine Spannung bekommt.

      Wenn 1 zurückkommt soll nix passieren und bei 0 auch nicht.

      Deswegen die grundsätzliche Frage geht das überhaupt?
      Also kann ich das verwerten, was da rauskommt?

      Gruß Wolfi

      Kommentar


        #4
        Zitat von OsLee540i Beitrag anzeigen
        Ist bestimmt wieder eine Kleinigkeit aber ich komm einfach nicht drauf.
        Logik einfach zyklisch aufrufen, z.B. 1x pro Minute? Braucht in der logic.conf einen crontab-Eintrag.

        Max

        Kommentar


          #5
          Achso, die Logik selber funktioniert, sie wird nur nicht aufgerufen... Alternativ zu crontab wenn einfach nur alle x Sekunden geht auch cycle: Configuration ? SmartHome.py 1.0 documentation
          Mit freundlichen Grüßen
          Niko Will

          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

          Kommentar


            #6
            Auch nicht

            Die Logik haut so NICHT hin. Hätt ich vorher Fett schreiben müssen.

            Ich kenne das was fetch_url da ausspuckt weil das plugin das so macht.

            Raus kommt dann eben 400 Bad request.
            Die logik soll wenn "Bad request" kommt eine Nachricht schreiben.

            Triggern tu ich das ganze einfach mit cycle alle 30 s

            Wie ich die logik aufbauen soll ist mir allerdings nicht klar.

            Ich hoff so versteht mans

            Gruss Wolfi

            Kommentar


              #7
              Laut Sourcen liefert fetch_url False zurück, wenn der Request Status Code nicht 200 ist. Versuch mal folgendes:

              Code:
              if not sh.tools.fetch_url(http://192.168.0.1/webservices/homeautoswitch.lua?switchcmd=getswitchstate&sid=5f6b4b2116580952&ain=01234567):
                  sh.whatsapp("Allgemeinstrom kein Saft", "4912345")
              Mit freundlichen Grüßen
              Niko Will

              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

              Kommentar


                #8
                Hallo,

                vielen dank für die Hilfe!

                Ich bin dadurch ein stück weiter gekommen.

                Code:
                if sh.tools.fetch_url('http://192.168.0.101:9000/HandleKey/p-') == b'Ok':
                 sh.whatsapp("Allgemeinstrom kein Saft", "4912345")
                Das geht.


                Jetz hab ich nur ein anderes Problem, das gehört aber zum Fritzbox Plugin.

                Gruß Wolfi

                Kommentar


                  #9
                  Das sollte aber wie gesagt nur funktionieren, wenn das Ding mit Code 200 Antwortet. Ansonsten sollte da False zurückgeliefert werden.
                  Mit freundlichen Grüßen
                  Niko Will

                  Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                  - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                  Kommentar


                    #10
                    Also ich hab es jetzt mit meinem Receiver ausprobiert,

                    der Liefert mir wenn er an ist, mit fetch_url() einen String mit b'Ok' zurück.

                    Sobald er an ist bekomm ich mit der Logik eine Meldung geschickt.

                    Wenn er aus ist kommt False, also keine Meldung.

                    200 kommt da nicht.

                    Gruß Wolfi

                    Kommentar


                      #11
                      Da hast du mich missverstanden. Wenn eine Antwort wie "400 Bad Request" zurück kommt, hat diese den Code 400. Dieser ist ungleich 200 und somit liefert die Funktion False zurück. Nur wenn die Anfrage an die Gegenstelle erfolgreich war, liefert die Gegenstelle als Code 200 zurück und die Funktion wertet die Antwort der Gegenstelle aus und liefert anstatt False die Antwort als String zurück.

                      Kommt also False ist die Gegenstelle aus irgendwelchen Gründen nicht erreichbar. Ansonsten bekommst einen String.
                      Mit freundlichen Grüßen
                      Niko Will

                      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                      Kommentar


                        #12
                        Ahhh,

                        Jetz is 10erl gfallen )

                        Jetz hab ichs a kapiert.

                        Gruss Wolfi

                        Kommentar


                          #13
                          Dann bitte noch Thread in den Themen Optionen als gelöst markieren. Danke!
                          Mit freundlichen Grüßen
                          Niko Will

                          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                          Kommentar

                          Lädt...
                          X