Ankündigung

Einklappen
Keine Ankündigung bisher.

Contact und Telegramm

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

    Contact und Telegramm

    Hallo ich würde gerne ein Telegramm bekommen wenn mein Garagentor zu lange offen steht!
    An sich funktioniert alles die Rückmeldungen kommen und werden auch richtig angezeigt!
    aber leider bekomme ich keine meldung auf mein Handy ? Der Bot funktioiert das habe ich auch schon getestet wenn ich den " Contact " mit Licht vertausch dann geht es auch nur eben bei "Contact" nicht vielleicht kann mir ja von euch einer auf die spünge helfen.
    meine rule datei
    rule"Nachricht Garagentor steht lange offen"
    whenContactEG_Garage_Tor changed to OPEN


    then

    // createTimer(now.plusSeconds(20))
    sendTelegram("bot1", "Garagentor offen ")





    und wie war das nochmal mit den text in schwarz rauskopiren ?

    #2
    HAt sich erledigt hab es hin bekommen

    Kommentar


      #3
      Hallo.
      Schön das du es hinbekommen hast.
      Kannst du mir noch sagen, wie du das gelöst hast, da ich am gleichen Problem sitze.
      Vielen Dank im Voraus.

      Holger

      Kommentar


        #4
        Text in schwarz rein kopieren ist einfach
        Schritt eins: Text komplett in einen Codeblock einfügen (die Raute aus dem Editormenü)
        Schritt zwei: Kompletten Block markieren und aus dem Editormenü das Symbol Tx auswählen. Das löscht sämtliche Auszeichnungen, also Schriftart/-größe/-farbe und fett/unterstrichen/kursiv.

        Ansonsten ist es auch immer gut, den Code nochmals zu kontrollieren, weil gerne mal Leerzeichen nicht korrekt eingefügt werden. Da das eine Fehlerursache sein kann, ist es dann blöd, wenn man auf solche Fehler hingewiesen wird, die ursprünglich gar nicht vorhanden waren.

        Kommentar


          #5
          HAllo
          habe gestern nochmals getestet und muss zugeben es funktioniert doch nicht so !! mein Problem ist das meine rule einfach nur die meldung zeitversetzt sendet ich möchte ja aber das sie nur sendet wenn die einschaltbedingung noch wahr ist......vielleicht kann doch noch jemadn helfen..
          Holger sorry ich dachte wirklich es funktionert

          gruss

          Kommentar


            #6
            Such doch mal nach Beispielen mit Timern, da wirst Du bestimmt fündig...

            In dem Block "createTimer" fehlen noch die eckigen klammern, in denen dann der auszuführende Teil nach Timerablauf drin steht. Dort kannst Du auch den aktuellen Zustand des Garagentores abfragen, bevor Du die Nachricht losschickst....
            Oder Du triggerst Deine Rule auch dann, wenn das Garagentor schließt und cancelst dort den Timer wieder, dann schlägt der nicht mehr zu, wenn Du die Garage schließt... (finde ich persönlich die elegantere Variante)

            Andreas

            Kommentar


              #7
              HAllo Danke für deine Antwort

              was ich machen möchte ist wenn das Garagentor z.b. länger als 15 min offen steht sprich ich es vergessen habe zu schließen das ich dann eine Meldung bekomme..
              mein Timer funktioniert auch allerdings versendet er die Meldung halt einfach 15 min nach dem öffnen !!
              Das Objekt offen bekomme ich über einen Endschalter ! die frage ist wie bekomme ich es hin das wenn innerhalb der 15 min das Tor wieder geschlossen wird die regel eben nicht feuert!!

              hoffentlich war das verständlich formuliert.

              Kommentar


                #8
                imhofa genau das will ich machen ich weiss nur nicht wie das ist mein problem

                Kommentar


                  #9
                  Code:
                  var Timer myTimer = null                                       //Am Anfang der rules Datei globale Variablen definieren
                  
                  rule "Nachricht Garagentor steht lange offen"
                  when
                      Item ContactEG_Garage_Tor changed                          // Status geändert?
                  then
                      if (ContactEG_Garage_Tor.state == OPEN)                    // offen?
                          if(myTimer === null)                                   // läuft myTimer schon?
                              myTimer = createTimer(now.plusSeconds(20), [     | // starte myTimer!
                                  if(ContactEG_Garage_Tor.state == OPEN)         // immer noch offen?
                                      sendTelegram("bot1", "Garagentor offen ")  // sende Nachricht!
                                  myTimer = null                                 // setze myTimer wieder auf null!
                              ])
                      else {                                                     // geschlossen?
                          myTimer.cancel                                         // stoppe myTimer und
                          myTimer = null                                         // setze wieder auf null
                      }
                  end

                  Kommentar


                    #10
                    Ach so, ich wollte eigentlich noch den Code erläutern...

                    Wenn die Garage geöffnet wird, prüft die Rule, ob der Timer schon läuft (könnte ja sein, dass die Rule mehrfach getriggert wird).
                    Anschließend wird der Timer gestartet. Falls die garage zwischenzeitlich geschlossen wird, wird der Timer beendet und wieder auf null gesetzt (wichtig für die Prüfung)
                    Falls der Timer abläuft, wird nochmals geprüft, ob die Garage noch offen ist (und die Nachricht verschickt).
                    Der Timer ist abgelaufen und wird deshalb auf jeden Fall wieder auf null gesetzt.

                    Streng genommen braucht es die Prüfung im Timer Rumpf nicht, da der Timer ja aktiv beendet wird.

                    Kommentar


                      #11
                      Super vielen Dank ich versuchs wenn es mir reicht gleich heute Abend!

                      DANKE!!!!

                      Kommentar


                        #12
                        HAllo leider geht auch das nicht habe es 1 zu 1 kopiert aber es geht nicht der Fehler muss im if then teilliegen das Habe ich bereites herrausgefunden

                        Kommentar


                          #13
                          Es gibt in openHAB rules kein if then! Gibt es eine Fehlermeldung in openhab.log?

                          Kommentar


                            #14
                            Ich habs es selber geschafft

                            rule "Nachricht Garagentor steht lange auf"
                            when
                            Item EG_Garage_Tor changed to OPEN

                            then
                            Timer = createTimer(now.plusSeconds(30), [ |

                            if( EG_Garage_Tor.state == OPEN )

                            {
                            sendTelegram ("bot1","Garagentor offen")
                            } ]


                            end



                            Kommentar


                              #15
                              1. Timer ist ein Schlüsselwort. Selbst wenn das funktioniert, ist es falsch.
                              2. Die Meldung wird auf jeden Fall abgesetzt, weil der Timer nicht gelöscht wird, wenn die Garage geschlossen wird.

                              Die Rule (so wie ich sie gepostet habe) ist korrekt.

                              Kommentar

                              Lädt...
                              X