Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Stundenplan

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Stundenplan

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      sourex last edited by

      Hey,
      habe mit Erstaunen gerade festgestellt das es keinen Adapter dazu gibt.
      Nutzt ihr etwa alle den Googlekalender ? Ich habe hier das Problem das der farblich garnicht in meine VIS passt.
      Ich bekomme es zwar mit dem dark reader dunkel, aber der Verändert auch die komplette VIS.
      Wie habt ihr das gelöst mit den Stundenplan eurer Kinder ?

      crunchip Ro75 2 Replies Last reply Reply Quote 0
      • crunchip
        crunchip Forum Testing Most Active @sourex last edited by

        @sourex es gibt einen Adapter für ein bestimmtes Schulsystem, aber den Link gerade nicht zur Hand

        sigi234 1 Reply Last reply Reply Quote 0
        • sigi234
          sigi234 Forum Testing Most Active @crunchip last edited by

          @crunchip sagte in Stundenplan:

          @sourex es gibt einen Adapter für ein bestimmtes Schulsystem, aber den Link gerade nicht zur Hand

          https://forum.iobroker.net/topic/51690/tester-neuer-adapter-webuntis?_=1691393246482

          1 Reply Last reply Reply Quote 0
          • Ro75
            Ro75 @sourex last edited by

            @sourex wir nutzen den Google Kalender zum Eintragen der Stunden.

            Zur Auslesen de Daten nutze ich den iCal- Adapter und zur Darstellung den Kalnder vom MaterialDesign.

            6ad0e0da-2111-4c19-b0b0-9b206fa3de8e-image.png

            Eine Anleitung findest du hier. Dort gibt es auch ein Beispielskript wir die Daten dann passend für das Widget konvertiert werden.

            Das Skript kannst du auch so modifizieren, dass jede Unterrichts-Stunde (z.B. Mathe, D, Eng, ...) jeweils in einer eigenen Farbe dargestellt werden.

            Leider kann ich dir im Moment kein aktuelles Besipiel zeigen, da bei uns noch Ferien sind und noch kein Stundenplan existiert.

            Aber hier ein Besspiel unseres Familienplaners.

            e4463e7d-fa22-48af-ba0a-af8b4e2629ce-image.png

            Und das passende Skript dazu:

            const moment = require('moment');
            
            var instancesC1 = $(`[id=ical.0.data.table]`);
            instancesC1.on(ical2CalendarWidgetC1);
            
            let datapointIdC1 = '0_userdata.0.calendar.ical2calendar';
            createState(datapointIdC1, '[]', {read: true, write: true, desc: 'JSON String for Calendar Widget', type: 'string', def: '[]'});
            
            //Familienplaner
            function ical2CalendarWidgetC1() {
                try {
                    let calList = [];
                    for (var inst = 0; inst <= instancesC1.length - 1; inst++) {
                        let icalObj = getState(instancesC1[inst]).val;
                        if (icalObj) {
                            for (var i = 0; i <= icalObj.length - 1; i++) {
                                let item = icalObj[i];
            
                                let startTime = moment(item._date);
                                let endTime = moment(item._end);
                                
                                let start = startTime.format('YYYY-MM-DD HH:mm');
                                let end = endTime.format('YYYY-MM-DD HH:mm');
            
                                if (startTime.format('HH:mm') === '00:00' && endTime.format('HH:mm') === '00:00') {
                                    // is full-day event
                                    if (endTime.diff(startTime, 'hours') === 24) {
                                        // full-day event, one day
                                        start = startTime.format('YYYY-MM-DD');
                                        end = startTime.format('YYYY-MM-DD');
                                    } else {
                                        // full-day event, multiple days
                                        start = startTime.format('YYYY-MM-DD');
                                        end = endTime.format('YYYY-MM-DD');
                                    }
                                }
            
                                var str=item.event;
                                var erg=false;
                                var farbe ='';
                                erg=str.includes('Geburtstag');
                                if (erg===true) {
                                    farbe = '#33B679';
                                }
                                erg=str.includes('Maya');
                                if (erg===true) {
                                    farbe = '#8E24AA';
                                }
                                if (farbe==='') {
                                    farbe = item._calColor;
                                }
                                // create object for calendar widget
                                var iSection='';
                                if(typeof item._section === 'undefined') {
                                    iSection='';
                                } else {
                                    iSection=item._section;
                                }
                                calList.push({
                                    start: start,
                                    end: end,
                                    name: item.event + ' ' + iSection,
                                    color: farbe,
                                    colorText: '#ffffff'
                                })
                            }
                        }
            
                        // Enter the destination data point that is to be used as object ID in the widget                
                        setState(datapointIdC1, JSON.stringify(calList), true);
                    }
                } catch (e) {
                    console.error(`ical2MaterialDesignCalendarWidget: message: ${e.message}, stack: ${e.stack}`);
                }
            }
            ical2CalendarWidgetC1();
            
            1 Reply Last reply Reply Quote 0
            • S
              sourex last edited by

              @crunchip @sigi234
              das habe ich gesehen, das wird wohl von unserer Schule wohl nicht unterstützt glaube ich. Es ist eine Grundschule, da gibts das glaube ich noch nicht.

              @ro75
              cool. so sieht das ganze auch schon viel besser aus !
              da werde ich mal nach schauen. Danke !

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              914
              Online

              31.6k
              Users

              79.6k
              Topics

              1.3m
              Posts

              4
              5
              383
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo