Warnmeldung

Ja, bei selbst erstellten Ereignissen musst du die Aktion setzen. Das machst du per
IPS_SetEventAction($eid, '{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}', []);

Danke Niels, damit ist jetzt RUHE!

Ist die Anweisung auch Abwärtskompatibel, also auch vor 5.6?

Nein, wenn dein Skript auch rückwärtskompatibel sein soll, dann müsstest du das prüfen, beispielsweise

if (function_exists('IPS_SetEventAction')) {
	IPS_SetEventAction($eid, '{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}', []);
}

Ahh danke, bin sowieso gerade dabei das alles zu konsolidieren und in meine „Scrikt-Bibliothek“ zu verlagern :wink:

Hab nämlich 10-15 Stellen gefunden wo ich sowas gemacht hatte!

Gruß Heiko

Mein Meldungs-Skript von dir ist ja total angepasst.
Ich kann leider nicht einfach das gesamte Skript austauschen.
Wo und was muss ich ändern, um diesen Fehler weg zu bekommen?

Das sollte einfach sein … such nach CreateEvent(1) … in der AddMessage.Funktion!

sieht jetzt nach zusätzlichen Optimierungen so aus:

        if ($expires > time()) {
            $eid = IPS_CreateEvent(1); 
            IPS_SetParent($eid, $_IPS['SELF']); 
            IPS_SetName($eid, 'Remove Message #'.$number); 
            IPS_SetEventCyclic($eid, 1, 0, 0, 0, 0, 0); 
            IPS_SetEventCyclicDateFrom($eid, (int)date('j',$expires), (int)date('n', $expires),  (int)date('Y', $expires));
            IPS_SetEventCyclicDateTo($eid, 0, 0, 0);
            IPS_SetEventCyclicTimeFrom($eid, (int)date("H", $expires), (int)date("i", $expires), (int)date("s", $expires));
            IPS_SetEventCyclicTimeTo($eid, 0, 0, 0);
            IPS_SetEventAction($eid, '{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}', []);
            IPS_SetEventActive($eid, true);
        }

Einfach das „PS_SetEventAction($eid, ‚{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}‘, );“ hinzufügen!

Gruß Heiko

Leider habe ich den gleichen Fehler, plus zusätzliche eine neue Fehlermeldung

10.06.2021, 19:32:50 | ScriptEngine         | Result for Event 48498

Warning: Cannot auto-convert value for parameter VariableValue in /var/lib/symcon/scripts/38937.ips.php on line 139

@Loewenkoenig sprichst Du mich an?

So oder so solltest Du mehr Infos schreiben,

  • welches Script
  • was steht an der Zeile
    usw.

Ciao Heiko

Es handelt sich um dein Meldungs-Skript.
Ich hatte die von dir genannte Fehlermeldung und daher die Zeile IPS_SetEventAction($eid, ‚{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}‘, []); eingefügt.

Der Auszug sieht nun so aus:

if ($expires > time()) { 

            $eventID = IPS_CreateEvent(1); 

            IPS_SetParent($eventID, $_IPS['SELF']); 

            IPS_SetName($eventID, 'Remove Message #'.$number); 

            IPS_SetEventCyclic($eventID, 1, 0, 0, 0, 0, 0); 

            if($expires == 0) { 

               IPS_SetEventCyclicDateFrom($eventID, 0, 0, 0); 

            } else { 

               IPS_SetEventCyclicDateFrom($eventID, (int)date('j',$expires), (int)date('n', $expires),  (int)date('Y', $expires)); 

            } 

            IPS_SetEventCyclicDateTo($eventID, 0, 0, 0); 

            if($expires == 0) { 

                IPS_SetEventCyclicTimeFrom($eventID, 0, 0, 0); 

            } else { 

                IPS_SetEventCyclicTimeFrom($eventID, (int)date("H", $expires), (int)date("i", $expires), (int)date("s", $expires)); 

            } 

            IPS_SetEventCyclicTimeTo($eventID, 0, 0, 0);

            IPS_SetEventAction($eid, '{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}', []); // NEUE ZEILE !!

            IPS_SetEventActive($eventID, true); 

        } 

        SetValueString($DataID, json_encode($data)); 

        SetValueInteger($LastNumberID, $number); 

        IPS_SemaphoreLeave($_IPS['SELF'].'DataUpdate'); 

        renderData($data);

Du musst natürlich auch die Variable für das Event anpassen, anscheinend heißt die bei Dir $eventID und nicht $eid!

Jetzt dürfte der Fehler weg sein.
Wie kann ich das deaktivieren, dass ich bei einem Ereignis immer eine gelbe Warnmeldung erhalte?

10.06.2021, 21:07:51 | ScriptEngine | Result for Event 37831

So wie immer…
Leerzeilen außerhalb der PHP Tags entfernen.
Oder, noch besser, den schließenden PHP Tag ganz weglassen.
Michael

1 „Gefällt mir“

Hat leider zu keinem Erfolg geführt.
Ich habe immer noch die Warnmeldungen.
Gibts noch einen anderen Grund für die Ausgabe? Eventuell ist dies im Skript so hinterlegt.
Habe aber nichts konkretes gefunden.

Alle Ausgaben von php sind Warnungen in Symcon und erzeugen, wenn das Script durch ein Ereignis gestartet wurde, eine gelbe Meldung.
Leerzeile vor dem ersten php-Tag?
Oder Echo, Print, var_dump im Script?
Michael

Genau das wars!
Ein einzelnes Leerzeichen - fast zu übersehen, aber aufgrund des gezielten Tipps habe ich nochmals kontrolliert.

Jetzt sind die ganzen Warnmeldungen weg - danke :pray: