Termine für Ferien o. Feiertage aus URL auslesen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • HRA
    Lox Guru
    • 27.08.2015
    • 1037

    #1

    Termine für Ferien o. Feiertage aus URL auslesen

    Hallo,
    ich habe auf meiner Suche nach einer Altanative für owncloud etc. und cldav folgende beide links im www gefunden.
    Ich habe bis her gern das PlugIn CalDav genutzt, aber ich habe immer Schwierigkeiten den Kalender fürs neue Jahr so einzufügen das die Syntax passt, ausserdem muß man dies immer manuell machen.
    Nun bin ich auf folgende Seiten gestoßen und habe sie mit den aktuellen Daten für Bundesland Sachsen probiert (SN steht hierfür für Sachsen)

    https://ferien-api.de/api/v1/holidays/SN/2022
    https://ferien-api.de/api/v1/holidays/SN/2022


    Nun stellt sich für mich die Herausforderung, wie kann ich diese Abfragen im Lox umsetzen und sinnvoll nutzbar machen
    Evtl. kann man dies auch im loxberry als PlugIn erstellen aber ich habe selbts keine Ahnung davon.
    Deshalb hier meine Aufwartung an al die Entwickler und Bastler !!!!

    Als Funktionsprinziep wäre folgendes angedacht
    1. Vorgabe des Bundeslandes entweder fix oder mittels Virtuellem Ausgang an das PlugIN
    2. Vorgabe des Jahres entweder fix aus akt. Datum gelesen oder mittels virtuellem Ausgang an das PlugIn
    3. Aufruf der o.g. URL mittels Loxone-Trigger , z.B. Tagesimpuls und virtuellem Ausgang an das PlugIn
    4. Im PluGin Vergleich des akt. Datums mit den Einträgen im Ergebnis
    a) Stimmt akt. Datum mit Eintrag in Feiertag überein -> Bit FEIERTAG auf aktiv
    b) Stimmt akt. Datum mit Eintrag in Ferien überein -> Bit FERIEN auf aktiv

    FEIERTAG bzw. FERIEN als VI an MS Senden und schon kann man den Betriebsmodus bearbeiten.

    Vorteil ist, daß es jeder Zeit aktuell ist.
    Die Loxone-Feiertage sind nur für Länderübergreifend, aber nicht Bundeslandspezifisch

    Hat da jemand bereits etwas in dieser Richtung getan?
    Evtl.kann man ein bestimmtes plugIn dafür bereits nutzen oder es gibt eine andere vergleichbare Lösung?
    Gruß HRA

    ### MS Gen2 + Gen1, MultiExt, Ext, AirExt, DMXExt; DMX4ALL ###
    ### EnOcean, KNX, MDT GTII ###
  • svethi
    Lebende Foren Legende
    • 25.08.2015
    • 6318

    #2
    Und warum suchst Du Dir nicht einfach die Ferien und importierst Dir die nicht einfach oder nicht gleich diesen als Kalender für CalDAV4Lox? Ja, das musst Du dann wohl jährlich einmal anpassen. Klar, wenn es dafür ein Plugin gäbe, dann müsste sich ja der Plugin Entwickler drum kümmern, wenn die am Format was ändern und Du könntest Dich schön zurück lehnen.
    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

    Kommentar

    • Vossi
      LoxBus Spammer
      • 25.08.2015
      • 456

      #3
      Wer sagt, dass der Dienst nächstes Jahr noch da ist?

      Kommentar


      • svethi
        svethi kommentierte
        Kommentar bearbeiten
        Eben.
        Und selbst wenn er noch da ist. Die Erfahrung hat ja nun immer wieder bewiesen, dass Dinge geändert werden. Aus diesem Grund wird er ja auch jedes Jahr, wie er schreibt, anpassen müssen, dass die Syntax passt. So lange es hierfür keine festgelegten Vorgaben/Standards ala RFC‘s oder dergleichen gibt, wüsste ich nicht, wieso sich sowas ein Programmierer antuen sollte
        Zuletzt geändert von svethi; 15.04.2022, 23:23.
    • HRA
      Lox Guru
      • 27.08.2015
      • 1037

      #4
      Entschuldigt bitte , es war nicht als Aufgabenstellung für eine Entwickler zu sehen, sondern lediglich als Frage, ob bereits jemand dies in ähnlicher ArtundWeise nutzt.
      Es ist mir schon klar, daß es Aufwand bedeuted und dies URL evtl. in der Zukunft ncht mehr da sein könnte.
      Schöne Ostern
      Gruß HRA

      ### MS Gen2 + Gen1, MultiExt, Ext, AirExt, DMXExt; DMX4ALL ###
      ### EnOcean, KNX, MDT GTII ###

      Kommentar


      • svethi
        svethi kommentierte
        Kommentar bearbeiten
        Naja, mit einem punkteförmig gestalteten, gewünschten Funktionsprinzip bist Du da aber mit einer reinen Anfrage ob sowas jemand schon umgesetzt hat etwas übers Ziel hinaus geschossen. Wünsche nach einer Programmierung mit dem Zusatz … „aber ich kann das alles nicht, das müsstet Ihr schon alleine machen“ und btw. ist es mir auch zu viel einmal im Jahr einen Ferienkalender einzutragen, kommen halt auch in einem DIY Forum nicht so doll. Auch nicht zu Ostern.
        Aber auch Dir Frohe Ostern.
    • romildo
      Lebende Foren Legende
      • 25.08.2015
      • 5159

      #5
      Sind denn 6 Betriebszeiten-Einträge in der Loxone App pro Jahr so viel Aufwand?
      lg Romildo

      Kommentar


      • svethi
        svethi kommentierte
        Kommentar bearbeiten
        Die Sachen kannste alle auch per ical bekommen und brauchst es nur importieren.

      • romildo
        romildo kommentierte
        Kommentar bearbeiten
        Und wie importiert man die direkt, also ohne Raspi, in Loxone?

      • svethi
        svethi kommentierte
        Kommentar bearbeiten
        Das muss ich Dir doch nicht schreiben.
        1. ist seine URL ssl. Da fällt der v1 schonmal eh weg. Und dann ist das direkte Verarbeiten im MS ja nur Vorwand gewesen. Es ging ja dann immer direkt um den Loxberry und Plugin.
        Aber natürlich kannst Du ical auch im MS per http Eingang Parsen.
    • HRA
      Lox Guru
      • 27.08.2015
      • 1037

      #6
      Hallo,
      das mit dem Loxberry war lediglich ein Gedanke.
      Wenn man es direkt im MS machen kann, wäre es natürlich super.

      Ich bekomme zwar den Aufruf der URl im Lox hin, aber wie bekomme ich die Auswertung der Antwort sowie die Suche nach dem richtigen Eintrag und dessen Datumsvergleich hin, daß ist das für mich Schwierige hierdran.
      Gruß HRA

      ### MS Gen2 + Gen1, MultiExt, Ext, AirExt, DMXExt; DMX4ALL ###
      ### EnOcean, KNX, MDT GTII ###

      Kommentar

      • romildo
        Lebende Foren Legende
        • 25.08.2015
        • 5159

        #7
        Wenn Du die URI hinbekommst, dann hast Du vermutlich ein Miniserver der neuen Generation
        Die Befehlserkennung ist eigentlich recht einfach aus den Rohdaten herauszufinden.

        Ich versuchs mal zu erklären.
        Beispiel Rohdaten:
        Code:
        [{"start":"2022-02-12T00:00Z","end":"2022-02-27T00:00Z","year":2022,"stateCode":"SN","name":"wi nterferien","slug":"winterferien-2022-SN"},{"start":"2022-04-15T00:00Z","end":"2022-04-24T00:00Z","year":2022,"stateCode":"SN","name":"os terferien","slug":"osterferien-2022-SN"},{"start":"2022-05-27T00:00Z","end":"2022-05-28T00:00Z","year":2022,"stateCode":"SN","name":"pf ingstferien","slug":"pfingstferien-2022-SN"},{"start":"2022-07-18T00:00Z","end":"2022-08-27T00:00Z","year":2022,"stateCode":"SN","name":"so mmerferien","slug":"sommerferien-2022-SN"},{"start":"2022-10-17T00:00Z","end":"2022-10-30T00:00Z","year":2022,"stateCode":"SN","name":"he rbstferien","slug":"herbstferien-2022-SN"},{"start":"2022-12-22T00:00Z","end":"2023-01-03T00:00Z","year":2022,"stateCode":"SN","name":"we ihnachtsferien","slug":"weihnachtsferien-2022-SN"}]
        Du suchst immer nach einem Eindeutigen Text der unmittelbar vor dem gewünschten Anzeigewert steht.

        Es kommt immer zuerst das Startdatum und dann das Enddatum.
        Beispiel Befehlserkennung:
        Anzeige von Jahr nach dem 1. start: start":"\v
        Anzeige von Jahr nach dem 2. start: start\istart":"\i\v
        Anzeige von Jahr nach dem 3. start: start\istart\i\istart":"\i\v
        Anzeige von Jahr nach dem 4. start: start\istart\i\istart\i\istart":"\i\v
        usw.

        Beispiel suche nach 3. Vorkommen von start:
        Wie Du sehen kannst, wird zuerst nach start gesucht, dann mit istart\i nach dem zweiten start und mit istart":"\i dann das dritte start gefunden.
        Mit \v wird der Wert hinter dem dritten start":" ausgegeben.
        Bemerkung
        Mit i vor start und \i nach start kann also weiter gesucht werden.
        Man könnte natürlich auch jedesmal nach start":" suchen, dies ist aber bei der Suche nicht notwendig, da start ja eindeutig genug ist.
        Vor dem Wert welcher angezeigt werden soll ist es aber zwingend notwendig alle Zeichen bis zum Wert zu suchen.
        Daher muss beim letzten start auch ":" vorhanden sein.
        Man könnte an Stelle von
        start\istart\i\istart":"\i\v
        auch
        start\istart\i\istart\i\i":"\i\v
        schreiben.

        Wenn nun zum Beispiel nach dem Monat gesucht werden soll, dann muss man zuerst start und danach - suchen, da hinter dem - der Wert vom Monat folgt.
        Beispiel für Monat nach dem 3. start:
        start\istart\i\istart\i\i-\i\v

        Beim Tag geht die Suche über start mit - auf Monat und nochmals - zum Tag.
        Beispiel für Tag nach dem 3. start:
        start\istart\i\istart\i\i-\i\i-\i\v

        Für das Enddatum geht das genau gleich, nur muss start durch end ersetzt werden.
        Zuletzt geändert von romildo; 18.04.2022, 07:56.
        lg Romildo

        Kommentar

        • svethi
          Lebende Foren Legende
          • 25.08.2015
          • 6318

          #8
          So wie romildo brauche auch ich keine Hilfe für die Befehlserkennungen. Allerdings hat Christian Fenzl ein Plugin, Command Recognition o.s. gebaut. Das soll für sowas wohl sehr gut sein. Vielleicht schaust Du da mal rein
          Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

          Kommentar

          • Guido
            Extension Master
            • 07.03.2016
            • 176

            #9
            Hallo zusammen,

            nachdem es mich auch immer genervt hat, die Ferien neu einzugeben / einzulesen, habe ich einmal ein Lösung ausgearbeitet.
            Vom Prinzip, wie HRA geschrieben, mit einer Ferien API. Und ja es kann sein, dass sich die API ändert oder ganz verschwindet!
            Aber solange die existiert kann man es ja nutzen

            Letztendlich geht es mit einem virtuellen HTTP Eingang und Befehlserkennung.
            Nutzen tue ich folgenden Aufruf für Bayern (andere Bundesländer sind selbstredend auch möglich):


            Als Rückgabewert kommt dann aktuell:
            30.5.2023,9.6.2023,Pfingst,Bayern


            Mit der Befehlserkennung hole ich dann den Tag, Monat und Jahr aus der Antwort und vergleiche dies mit dem aktuellen Datum. Wenn dieses kleiner oder gleich dem zurückgebenden Datum ist, dann haben wir Ferien.

            Genauer beschrieben ist das Ganze hier.


            Gruß Guido

            Kommentar

            • seulaslintan
              Azubi
              • 18.07.2024
              • 1

              #10
              Zitat von Guido
              Hallo zusammen,

              nachdem es mich auch immer genervt hat, die Ferien neu einzugeben / einzulesen, habe ich einmal ein Lösung ausgearbeitet.
              Vom Prinzip, wie HRA geschrieben, mit einer Ferien API. Und ja es kann sein, dass sich die API ändert oder ganz verschwindet!
              Aber solange die existiert kann man es ja nutzen

              Letztendlich geht es mit einem virtuellen HTTP Eingang und Befehlserkennung.
              Nutzen tue ich folgenden Aufruf für Bayern (andere Bundesländer sind selbstredend auch möglich):



              Gruß Guido



              ...so wie leider gerade...

              Hessen wird nicht mehr ausgegeben, die anderen Bundesländer funktionieren noch.




              Kommentar

              • Ah!Da!
                Azubi
                • 13.09.2024
                • 7

                #11
                Hey Guido, ich bin ganz neu hier und stöbere viel herum und probiere viel aus.


                Herzlichen Dank für den vielen Input an dieser Stelle. Ich finde Deinen Ansatz, Guido, sehr smart und habe ihn auch für mich umgesetzt. Leider funktioniert es nicht so wie beschrieben. Als Dauerantwort aus der Befehlserkennung erhalte ich ein "0" .... auch wenn ich in den Eigenschaften sehe, dass der Befehl richtig ausgelesen wird, wird er nicht korrekt weiter gegeben. Die Konsequenz ist, dass der Datenabgleich zum aktuellen Datum nicht funktioniert und ich dauerhaft "Ferien" habe. Was kann ich hier falsch gemacht haben?

                Gruß

                Ah!Da!
                Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Konfig Ferien einlesen.png Ansichten: 0 Größe: 75,1 KB ID: 445143
                Angehängte Dateien
                Zuletzt geändert von Ah!Da!; 28.10.2024, 10:47.

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Ich denke es liegt daran, dass in der Befehlserkennung im Eigenschatsfenster nur \v anstelle der Befehlserkennung \i.\i\i.\i\v wie im zweiten Bild eingetragen ist.
              • Ah!Da!
                Azubi
                • 13.09.2024
                • 7

                #12
                Hallo romildo ..... Danke für den Hinweis, aber ich glaube, das täuscht. Ich hatte für Tag, Monat und Jahr jeweils ein eigenes "Format" eingetragen, aber nicht den korrespondierende Screenshot zum Eigenschaftsfenster hochgeladen .... habe ich jetzt nachgeholt .

                Grüße,

                Ah!Da!

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  OK, dann passt \v natürlich schon.
                  Hast Du denn die URL auch in den Befehl richtig eingetragen und auch in den Miniserver gespeichert?
                  Und gleich vorweg, die Frage ist nicht blöd, oder gar böse gemeint, ist halt alles schon vorgekommen
              • Ah!Da!
                Azubi
                • 13.09.2024
                • 7

                #13
                Hey. Ich nehme vorläufig alles zurück und behaupte das Gegenteil.

                Ich habe bisher nur in der Simulation getestet, mir aber nicht die Liveview angeschaut. Da sieht alles super aus …. Ich beobachte noch mal … Sorry für die Verwirrung und danke für die Geduld.
                Zuletzt geändert von Ah!Da!; 28.10.2024, 16:09.

                Kommentar

                • Ah!Da!
                  Azubi
                  • 13.09.2024
                  • 7

                  #14
                  Hey, ich muss jetzt doch noch mal eine Frage stellen. Ich habe mir noch mal den Statusbaustein von Guido angeschaut:

                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Statusbaustein.png
Ansichten: 295
Größe: 187,1 KB
ID: 445255


                  Wie ist diese Logik richtig zu lesen? Nach meinem laienhaften Verständnis lese ich die Bedingungen Zeile für Zeile: Sobald an einem der drei Eingänge (I1, I2 oder I3) in V1 der Wert 1 anliegt, wird der Status "Ferien" ausgegeben? Also, wenn der Monat des aktuellen Tagesdatums größer als der nächste Ferienmonat ist, dann wird an I2 eine 1 ausgegeben und der Status geht auf 1 und meldet "Ferien"? Oder müssen die drei Bedingungen gleichzeitig vorliegen an V1?

                  In meiner laienhaften Denkweise hätte ich die Bedingungen, dass an I1, I2 und I3 der Wert 1 anliegen muss, ganz nach oben in eine Zeile geschrieben .... also so oder so ähnlich:
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: meine Baustein Logik_neu.png
Ansichten: 298
Größe: 27,8 KB
ID: 445256

                  Warum wäre das nicht richtig?

                  Ich freue mich auf Euer Feedback!

                  VG

                  Ah!Da!




                  Angehängte Dateien

                  Kommentar

                  • romildo
                    Lebende Foren Legende
                    • 25.08.2015
                    • 5159

                    #15
                    Du siehst das schon richtig.
                    Die Bedingungen einer Zeile sind UND verknüpft, Bedingungen verschiedener Zeilen sind ODER verknüpft.
                    Priorität von oben nach unten. Wird also eine Bedingung erfüllt, werden die nachfolgenden Zeilen nicht mehr abgefragt.
                    lg Romildo

                    Kommentar

                    Lädt...