Ankündigung

Einklappen
Keine Ankündigung bisher.

Bei Anruf schalten

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

    Bei Anruf schalten

    Hallo,

    Ich versuche gerade so viel wie möglich nach OpenHab zu migrieren.
    Das FritzBox-Binding funktioniert und zeigt brav Anrufer/verpasste Anrufe an.
    Nun suche ich allerdings noch eine Möglichkeit mit dem Call Switches zu bedienen. Es gibt fürs Wiregate eine Implementation in Perl, was auch bei mir läuft. Vergl. hier
    Gibt es für OpenHab eine ähnliche Lösung?

    Grüße, Rico

    #2
    Hallo,

    macht es denn noch Sinn, Sachen per Telefonnummer zu schalten, wenn du heutzutage per Smartphone und mittels Apps wie HABDroid, etc. sowieso alles direkt bedienen kannst?

    Gruß,
    thoern

    Kommentar


      #3
      ja, ich schalte z.b. ein Licht für meinen schwerhörigen Vater.

      Holger

      item:
      Code:
      Call   Incoming_Call_No   "Caller No. [%2$s]"   (Phone)   { fritzbox="inbound" }
      rule:
      Code:
      rule "inbound Call"
        when Item Incoming_Call_No received update
      then
            var CallType call = Incoming_Call_No.state as CallType
          
          println("Anruf von Nummer " + call.origNum + "  fuer Nummer " + call.destNum)
      
          if (call.destNum.toString.contains("123456789")) // Zielnummer wenn notwendig auswerten
          {
              println("Telefon klingelt fuer " + call.destNum.toString)
      
              // Aktion ausführen...
          }
      
      end

      Kommentar


        #4
        Zitat von HolgerW Beitrag anzeigen
        ja, ich schalte z.b. ein Licht für meinen schwerhörigen Vater.
        Ok, das leuchtet ein. Sinnvoller Anwendungsfall!

        Kommentar


          #5
          Moin!

          @Holger, das sieht exzellent aus! Das werde ich mal so probieren.

          @thoern, Garagentor von unterwegs öffnen. das Telefon kann ich per VoiceCommand bedienen. Alles andere wäre im Auto grob fahrlässig. VPN, aufreissen, OpenHab aufrufen usw.


          Gruß,

          Rico

          Kommentar


            #6
            So, nun siehts so aus:

            Code:
            rule "inbound Call"
              when
                 Item Call_Incoming changed to ON
            then
                    var call = Call_Incoming_No.state as CallType
                    var destNum = call.getDestNum()
                    var origNum = call.getOrigNum()
            
                if (call.origNum.toString.contains("0123456789")) 
                   {
                    sendCommand(Garagentor_Li, ON)
                   }
            end
            was aber doof ist, denn rufe ich nun mit meinem Handy daheim auf einer anderen MSN an, geht das Tor auch auf.
            Cool wäre noch eine "UND" Verknüpfung.

            Sowas wie

            Code:
            if (call.origNum.toString.contains("0123456789")) && (call.destNum.toString.equals("889900"))
            Aber irgendwie.... gehts wohl nur mit OR....
            Jemand eine Idee?

            Gruss! Rico

            Kommentar


              #7
              Lass dir Anrufer und angerufene Nummer doch mal anzeigen, dann siehst du was du abfragen musst.

              Holger

              Edit: .equals is evtl. ungüstig, er macht +49 usw davor.
              mach mal die Klammern so:
              Code:
              (call.origNum.toString.contains("0123456789") && call.destNum.toString.contains("889900"))

              Kommentar


                #8
                die kommt so:

                0123456789##889900

                also völlig ok. beide alleine laufen auch.
                Problem ist "nur" das irgend die per AND zu verknubbeln. Da fehlts mir aber gerade echt an Proggerpraxis.

                Gruss! Rico

                EDIT: JA! Klammern! das wars! Ich D*** hab die if-Abfrage zu früh zugemacht

                DANKEEE!!!

                Kommentar


                  #9
                  Mach mal das mit den Klammern oder, einfacher zu überblicken, 2 IF - Abfragen hintereinander:
                  Code:
                  if (call.origNum.toString.contains("0123456789")) 
                  {
                      if (call.destNum.toString.equals("889900")) 
                      {  
                          // mach was
                       }
                  }
                  Holger

                  edit: ok, es ist aber keine IF-Schleife sondern eine IF-Abfrage ....

                  Kommentar

                  Lädt...
                  X