Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Rule / Loops / Schleifen

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

    #16
    Meinst du das?

    Code:
    String  strSunset               "Sunset [%s]"    <clock>    { http="<[http://api.wunderground.com/api/3f7804104c56181a/astronomy/q/LI/schaan.xml:21600000:XSLT(wunderground_sunset.xsl)]" }

    Kommentar


      #17
      Das Ergebnis siehst du im Bild.
      Angehängte Dateien

      Kommentar


        #18
        es geht einfacher, aus dem Beispiel die Rule "abgeschaut".
        Datum wird ja nicht gebraucht.

        Code:
        var Integer hour
            var Integer minute    
            var DateTime sunset = parse("T"+strSunset.state)
                
            hour = sunset.getHourOfDay
            minute = sunset.getMinuteOfHour
                
            if ((now.getHourOfDay>hour) || ((now.getHourOfDay==hour) && (now.getMinuteOfHour >= minute)))
            {
               logInfo("test","dingdong")
            }

        Kommentar


          #19
          dingdong

          Holger du bist der beste

          Kommentar


            #20
            Ich brauche wieder Hilfe den ich habe ein neues Bedürfnisse entdeckt.
            Ich mochte gerne Termine aus meinem Google Kalender auslesen.
            Später möchte ich dann Regeln erstellen die mich in definierten Zeitspannen vor eintreffen eines bestimmten Termins akustisch via TTS erinnern.

            Hat jemand eine Ahnung wie ich den Google Kalender auslesen kann.

            Gesendet von meinem Nexus 4 mit Tapatalk

            Kommentar


              #21
              Wenn Du das Wiki zum Google-Kalender befolgst, reicht es, einen Termin anzulegen und in der Beschreibung etwas wie
              Code:
              start {
              send Shutter_FF_Child1 UP
              }
              end {
              send Shutter_FF_Child1 DOWN
              }
              einzutragen. In diesem Fall fährt der Rollladen im Kinderzimmer 1 zu Beginn des Termins hoch und zum Ende des Termins runter. Für eine Ansage sollte z.B.
              Code:
              start{
              say (Du hast einen Termin)
              }
              reichen.

              Kommentar


                #22
                Danke udo1toni, das kenne ich, hilft mir in diesem Fall aber nicht. Es ist etwas Anspruchsvoller.

                Ich importiere meinen Arbeitsplan in meine Google Calender.
                Mein Arbeitstag beginnt immer zu verschieden Zeiten im Calender habe ich dann immer einen Termin mit dem Betreff "office". Am morgen verliehre ich immer ein bisschen die Zeit aus dem Auge. Darum würde ich gerne 60 Minuten, dann 45 und zum Schluss 30 Minuten vor dem Termin eine Ansage bekommen die via TTS ausgegeben wird.

                Dazu sollte geprüft werden ob am heutigen Tag ein Termin mit dem Betreff "office" ansteht. Wenn ja wird via Rule im definierten Rythmus ein Text wieder gegeben.

                Die Informationen müsste man via XSLT extrahieren, ich kenne mich damit aber nicht aus.

                Kommentar


                  #23
                  Ah. OK, ist verstehe...

                  Wie importierst Du denn Deinen Dienstplan? (Ich arbeite im Schichtdienst und stehe damit vor einem ähnlichen Problem)
                  Vielleicht wäre es am einfachsten, beim Import automatisch entsprechende Reminder in Google Kalender zu erstellen? - Falls der Import irgendwie automatisiert ist...
                  Ich habe meine 'openhab-Termine' in einem eigenen Unterkalender und lese auch nur diesen aus. Tauchen denn Deine Dienste im openhab-log auf?

                  Kommentar


                    #24
                    Wir haben ein Tool mit dem wir unseren Plan in Outlook auf unsere Mitarbieteradresse impotieren können danach speicher ich den Kalender als ical Datei und importiere ihn bei google in einen seperaten Kalender.

                    Die idee ist auch nicht schlecht das ich versuche mit dem googler Kalender eine Regel erstelle. Aber nur als Workaround.

                    Kommentar


                      #25
                      gibt es die Möglichkeit überhaupt dem google kalender zu sagen wenn der Betreff "office" ist füge folgende Information hinzu. Ich habe gerade nichts gefunden. Ich glaube Openhab kann das besser wenn ich nur diesen Termin auslesen könnte.

                      Kommentar


                        #26
                        Ich hab jetzt für mich eine Möglichkeit gefunden, den Kalender direkt mit openHAB auszulesen.
                        Ich hole mir das ICS File mit dem HTTP Binding und parse den empfangenen String nach den Datums- und Inhaltsfeldern.
                        Ist etwas zeit/rechenintensiv aber den Kalender holt man ja nicht alle paar Minuten.

                        Holger

                        Kommentar


                          #27
                          Super Holger, Poste das doch bei Gelegenheit im WIKI

                          Kommentar


                            #28
                            [QUOTE=Jockel;353452]Kein fertiges getestetes, aber im Prinzip folgendermaßen:

                            Code:
                            var Timer  BlinkTimer     = null
                            
                            when 
                              Item Eingehender_Anruf received update ON 
                            then 
                            	if(BlinkTimer==null) {
                                        BlinkTimer = createTimer(now.plusSeconds(1)) [|
                            		sendCommand(STEHLEUCHTE_WOHNZIMMER, !STEHLEUCHTE_WOHNZIMMER.state)
                            		if (Eingehender_Anruf.state == ON) {
                            		    BlinkTimer.reschedule(now.plusSeconds(1))
                            		}
                                        ]
                                    } else {
                            	    BlinkTimer.reschedule(now.plusSeconds(1))
                            	}
                            end
                            Wie gesagt, ungetestet. Außerdem bin ich nicht sicher on die Negierung im Parameter des send Command funktioniert, ansonsten müsste da noch eine Abfrage hin.

                            So, endlich mal Zeit zum testen gehabt ;-)

                            Mit dem Automatischen Negieren des States mit "!" klappt es wohl nicht:

                            Code:
                            java.lang.RuntimeException: The name '! <XMemberFeatureCallImplCustom>' cannot be resolved to an item or type
                            Naja - nun habe ich endlich eine Funktionierende Lösung ohne Tread:Sleep - auch wenn diese ungemein komplizierter ist ;-)

                            Code:
                            rule SCHARF_IMPULSE
                            	when 
                            		Item AZ_SSB1_SIGNAL_SCHARF_IMPULSE received command ON
                            	then
                            		if(HTLightsBlink!=null) 
                            			{
                            			HTLightsBlink.cancel()
                            			}
                            		if(HTLightsBlink==null) 
                            			{
                            			HTLightsBlink = createTimer(now.plusMillis(1000)) [|
                            				if (LICHT_AN_AUS_AUSSEN_HAUSTUER.state == ON)
                            					{
                            					sendCommand(LICHT_AN_AUS_AUSSEN_HAUSTUER, OFF)
                            					}
                            				else
                            					{
                            					sendCommand(LICHT_AN_AUS_AUSSEN_HAUSTUER, ON)
                            					}
                            				if (AZ_SSB1_SIGNAL_SCHARF_IMPULSE.state == ON) 
                            					{
                            					HTLightsBlink.reschedule(now.plusMillis(1000))
                            					}
                            				]
                            			} 
                            		else 
                            			{
                            			HTLightsBlink.reschedule(now.plusMillis(1000))
                            			}
                            end
                            Sorry - habe gerade gesehen das ich im ersten Beispiel noch andere Items hatte - aber das Prinzip ist das gleiche.

                            Grüße

                            Kommentar

                            Lädt...
                            X