Ankündigung

Einklappen
Keine Ankündigung bisher.

http request aus Logik versenden

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

    http request aus Logik versenden

    Hallo zusammen,

    ich hätte eine Frage zu Szenen und ev. auch Items.
    Ich habe eine Szene 9/0/0, mit der ich das Haus "abdrehe". Die Szene liegt in einem Taster inkl. Logik dort, über Smartvisu und SmarthomeNG kann ich die Szene auch über die Visu triggern.
    Jetzt würde ich gerne zusätzlich einen http request (http://volumio/command/?cmd=stop) absetzen um meine Volumios zu stoppen.
    Was würdet ihr mir raten, wie ich das am einfachsten ergänze? Über SmarthomeNG?

    Danke
    Johannes

    #2
    Dazu würde ich das Python Package requests nutzen und etwa sowas in die Logik schreiben:
    Code:
    [I]r = [/I][I]requests.get[/I][I]('http://volumio/command?cmd=stop')[/I]
    über r.status_code kannst Du dann noch abfragen ob das erfolgreich war (r.status_code == 200)

    Evtl. müsstest Du vorher ein
    Code:
    import requests
    machen. Das kann ich aus dem Kopf nicht sagen.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Danke!

      Für wen es noch interessant ist, requests mit
      Code:
      pip install requests
      installiert.

      Code:
      #!/usr/bin/env python3
      # volumio_stopp.py
      
      import requests
      
      logger.info('##Volumio request: Stopp')
      r = requests.get('http://192.168.0.20/api/v1/commands/?cmd=stop')
      if r.status_code == 200:
          logger.info('##Volumio request: Stopp successfull')
      Trigger über watch_item.

      Code:
      [volumio_stopp]
          filename = volumio_stopp.py
          watch_item= Zentral.Szenen
      Da liegt momentan noch ein Schwachpunkt. Aktuell habe ich nur eine Szene auf der 9/0/0, theoretisch dürfte ich aber nur auf die Szene #1 triggern.

      Weiß wer wie man das verbessern könnte?

      Kommentar


        #4
        Du kannst in Deiner Logik ja mal schauen, ob du mit dem Trigger[] Objekt rausbekommst, von wem und mit welchem Wert getriggert wurde.

        Füge z.B. sowas am Beginn der Logik ein und schau Dir das Log für die Logik an:
        Code:
        logger.info('Logik {} triggered by {}, source {}, value {}, dest {}'.format(logic.name, trigger['by'], trigger['source'], trigger['value'], trigger['dest']))

        Kommentar

        Lädt...
        X