[Modul] iCal Calender in IP Symcon lesen und verarbeiten

hat einen für mich einen Befehl zum aktivier und deaktivieren der Instanz, da das bei mir manchmal hilft um die Fehlerhafte Instanz wider zu korigieren, aber eben nur manuell
momentan.

Du kannst die Instanz über

IPS_SetProperty(12345, 'active', true);
IPS_ApplyChanges(12345);

wieder aktivieren.

Besten dank,

Und wie geht die abfrage ob die Instanz fehlerhaft ist ?

Und das ggf in eine boolvar

Hi,
IPS_GetInstance() liefert ein Feld zurück und in ‚InstanceStatus‘ steht der Status.
Status kann sein:
101 => ‚Instanz wird erstellt‘,
102 => ‚Instanz ist aktiv‘,
103 => ‚Instanz wird gelöscht‘,
104 => ‚Instanz ist inaktiv‘,
105 => ‚Instanz wurde nicht erzeugt‘,
ab 200 kommen dann Fehler.

Ralf

klasse vielen Dank dir

$st = IPS_GetInstance(42650);

if ($st != 102)
{
SetValue(12345,true), // ok
}
else
{
SetValue(12345,false), // Fehler
}

aber das geht nicht

Hi,
wenn dann eher $st[‚InstanceStatus‘].

Versuch mal
$st = IPS_GetInstance(42650);
print_r($st);

Ralf

ok geht
und wie bekomm ich den
[InstanceStatus] => 102
jetzt in eine Variable

Hi,
SetValue(id der variablen, $st[‚InstanceStatus‘]);

Ralf

sorry aber irgendwie wird das nix

$st = IPS_GetInstance(42650);
SetValue(10475, $st[‚InstanceStatus‘]);


Warning: Use of undefined constant ‚InstanceStatus‘ - assumed ‚‚InstanceStatus‘‘ (this will throw an Error in a future version of PHP) in /mnt/data/symcon/scripts/20288.ips.php on line 3

Notice: Undefined index: ‚InstanceStatus‘ in /mnt/data/symcon/scripts/20288.ips.php on line 3

Das mit den Anführungszeichen hat das Forum geändert. So benutze ich es in meinen Scripten.

$st['InstanceStatus']

Ralf

ahhhhh jetzt läuft es danke dir

Guten Morgen und happy EasterBunny!

mir hat der Osterhase heute dieses Ei gelegt.

Ist ein iCal Kalender der zwar auch immer mal Fehler hatte aber nach Inaktiv/Aktiv immer gleich wieder ging.
Damit ist es jetzt vorbei.
Was will er mir mit den 5 redirects sagen?
Der Kalender Link hat sich seit 4 Monaten nicht geändert.

Ideen wie ich das wieder hinbiege?

EDIT:
Hab es auch an meiner Testmaschine. Tritt bei Kalendern auf die ich im Mac Kalender freigebe. Die gingen bisher recht gut, jetzt geht keiner mehr.
Hat sich da im Modul was geändert oder woran kann das liegen?

EDIT 2 - erstmal gelöst:
Hab die Freigaben im Mac Kalender mal alle gelöscht und neu angelegt. Nun mag das Modul die Kalender wieder. Geändert hat sich der Anfang der Links, alles was vorher p101 war ist nun p116.
Kann es mir nicht erklären warum das so ist, aber erstmal geht es wieder.
Hat/te das noch jemand?

Danke und Gruss Seppm

Aus aktuellem Grund:
Hat das Thema mit wiederkommenden Terminen sonst keiner? (Google Kalender)

Das Auswerteskript (Übermorgen) zeigt mir für 23.04.2022 wieder einen 6 monatlichen (wiederkehrenden) Termin an der bereits am 02.04.2022 10:00-12:00 war.

Könnte das bitte mal Jemand nachstellen?

Einfach einen wiederkehrenden Termin am 02.04. erstellen (z.b. 6 monatlich jeden 1 Samstag im Monat)
und dann das Auswerteskript starten. Es müsste dann dieser Termin als ÜBERMORGEN (für 23.04.2022) angezeigt werden.

Danke und lg

Update:
Ich habe es lokalisiert wo es herkommt, aber das sagt mir nicht allzuviel:

Der Original Kalender:

Das Ergebnis:

Den tatsächlichen TESTTermin am 23.04. zeigt er korrekt an.
Zusätzlich aber noch den falschen Termin vom 02.04.

Ändere ich den Code auf:

scheint es zu funktionieren. Wieso weiß ich allerdings nicht…

Update:
Leider doch nicht. NUR wenn es an dem 23.04. einen Kalendereintrag gibt erscheint der 02.04. Termin nicht fälschlicherweise. Falls kein (korrekter) Kalendereintrag am 23.04. vorhanden ist, wird wieder der falsche Eintrag vom 02.04. ausgegeben…

Hi,
der interessante Teil steht eigentlich ein paar Zeilen vorher mit:

    if (($entry["From"] >= $morgen) && ($entry["To"] <= $uebermorgen)){

d.h. an deine Stelle sollte das Script nur kommen wenn der Termin nicht ganztags ist und nur zwischen $morgen und $uebermorgen liegt. Füge an dieser Stelle mal ein

print_r($entry);

ein, lass das Script laufen und poste was ausgegeben wurde.

Ralf

Hi Ralf,

if (($entry["From"] >= $morgen) && ($entry["To"] <= $uebermorgen))
       { 
           // test
           print_r($entry);

            if ($entry["allDay"])
            {
                    if ($morgen_flag)
                    {
                        $text2a .= "Morgen ".PHP_EOL;

                        $morgen_flag = false;
                    }   
                        $text2a .= $entry["Name"]." ".PHP_EOL;
                        $text2 .= "<b>".$entry["Name"]."</b> ".$entry["Location"]."<br>".PHP_EOL;          
                
            }

da passiert nix.

Hingegen hier:

// ********************************************************************************************************************************
// Übermorgen

foreach ($calendar_array as $entry) 
{
    if ($entry["Status"] == 'CANCELLED') continue;
    if ($entry["allDay"] == false)
    {
        $stunde = date('H', $entry["From"]);
        $minute = date('i', $entry["From"]);
        $zeit = $stunde.":".$minute." Uhr ";      
    }
    else
    {
        $entry["From"] = mktime(0, 0, 0, date("m", $entry["From"])  , date("d", $entry["From"]), date("Y", $entry["From"]));
        $entry["To"] = mktime(0, 0, 0, date("m", $entry["To"])  , date("d", $entry["To"]), date("Y", $entry["To"]));
    }

    if (($entry["From"] >= $uebermorgen) && ($entry["To"] <= $ende))
    {   
        // test
        print_r($entry);

        if ($entry["allDay"])
        {
            if ($uebermorgen_flag)
            {
                $text3a .= "Übermorgen".PHP_EOL;
                $uebermorgen_flag = false;
            }

                $text3a .= $entry["Name"]." ".PHP_EOL;
                $text3 .= "<b>".$entry["Name"]."</b> ".$entry["Location"]."<br>";

kommt:

Array
(
    [UID] => e3uki7tg4mss47ohiuqlevs473@google.com
    [Name] => Wasserfilterwechsel BWT
    [Status] => TENTATIVE
    [Location] => 
    [Description] => Filtereinsatz für BWT E1 Einhebelfilter
    [From] => 1650700800
    [To] => 1650701700
    [FromS] => 2022-04-23T10:00:00+02:00
    [ToS] => 2022-04-23T10:15:00+02:00
    [allDay] => 
)

Diese falsche Ausgabe gibts NUR wenn der Kalendereintrag Wiederholend ist (!)

Moin,

Kalender oder Modul liefern aber das ein Termin von 10:00 bis 10:15 am 23.4.22 eingetragen ist. Lass dir deinen Kalender mal exportieren und such nach „Wasserfilterwechsel BWT“. Eventuell ist dieser Termin gecancelt aber es kommt nicht im Modul an.

TENTATIVE macht mich stutzig und ich weiß nicht genau was der Kalender damit meint. Gefunden habe ich nur das es wohl hauptsächlich Outlook benutzt und mehr oder weniger „vielleicht ja oder vielleicht nein“ meint.

Ralf

DTEND:20220916T073000Z
DTSTAMP:20220421T075823Z
UID:6ks6acpm64ojgb9j64rjcb9k70oj0b9pcoo3eb9i6hijichk6kqmachmc4@google.com
CREATED:20220408T083544Z
DESCRIPTION:
LAST-MODIFIED:20220408T084457Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Zahnarzt
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P0DT0H10M0S
END:VALARM
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20220402T100000
DTEND;TZID=Europe/Berlin:20220402T101500
RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SA
DTSTAMP:20220421T075823Z
UID:e3uki7tg4mss47ohiuqlevs473@google.com
CREATED:20200921T181055Z
DESCRIPTION:Filtereinsatz für BWT E1 Einhebelfilter
LAST-MODIFIED:20220421T042054Z
LOCATION:
SEQUENCE:3
STATUS:TENTATIVE
SUMMARY:Wasserfilterwechsel BWT
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P7D
END:VALARM
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20211003T100000
DTEND;TZID=Europe/Berlin:20211003T101500
RRULE:FREQ=MONTHLY;UNTIL=20220401T215959Z;INTERVAL=6;BYDAY=1SA
DTSTAMP:20220421T075823Z
UID:ii53o565vfgbi02isa3qq5bje7@google.com
CREATED:20200921T181055Z
DESCRIPTION:Filtereinsatz für BWT E1 Einhebelfilter
LAST-MODIFIED:20220421T042054Z
LOCATION:
SEQUENCE:2
STATUS:TENTATIVE
SUMMARY:Wasserfilterwechsel BWT
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P7D
END:VALARM
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20201003T210000
DTEND;TZID=Europe/Berlin:20201003T220000
RRULE:FREQ=YEARLY;UNTIL=20221002T215959Z
DTSTAMP:20220421T075823Z
UID:70ojae1j6gp64bb260p3ab9k74r62b9pclh3eb9l6dgj8dpj6hj66eb5ck@google.com
CREATED:20200921T181055Z
DESCRIPTION:Filtereinsatz für BWT E1 Einhebelfilter
LAST-MODIFIED:20220421T042136Z
LOCATION:
SEQUENCE:2
STATUS:TENTATIVE
SUMMARY:Wasserfilterwechsel BWT
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P7D
END:VALARM
END:VEVENT
BEGIN:VEVENT
DTSTART;TZID=Europe/Vienna:20221001T100000
DTEND;TZID=Europe/Vienna:20221001T103000
RRULE:FREQ=MONTHLY;BYDAY=1SA
DTSTAMP:20220421T075823Z
UID:2dv4jrfgo3c9pvhb0hba0g4ujn@google.com
CREATED:20220421T042240Z
DESCRIPTION:
LAST-MODIFIED:20220421T042240Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:BWT Wasserfilter kontrollieren / reinigen
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

Hi,
ist das alles was zum Filter im Export des Kalenders steht? Ich sehe da nur das Du 3 oder 4 wiederholende Termine zum Filter eingetragen hast aber bei keinem kann ich was mit 23.4. berechnen.

Ich schätze ich habe keine Idee vielleicht fällt Bumaas was dazu ein.

Ralf