IP-Symcon 2.5/2.6 - Hilfsskripte

die _autoinclude.inc.php ist vorhanden, sollte inhaltlich auch ok sein, habs aber nur überflogen… bin aber auch bald durch mit den Änderungen, ist ein gutes Fingertraining :slight_smile:
@axel wie hast du das:
IPS_SetInfo($vid, „this variable was created by script #$IPS_SELF“);
gelöst? außer die global Zeile weg…

Ähmm. :confused:

Hallo!
Habe mal das Script von RWN erweitert, da ja bei den Ereignissen teilweise auch Scripte hinterlegt sind:

<?
$search = Array('$IPS_SENDER', '$IPS_SELF', '$IPS_VALUE', '$IPS_VARIABLE', '$IPS_INSTANCE',
                      '$IPS_EVENT', '$IPS_TRIGGER', '$IPS_OLDVALUE', '$IPS_TARGET', '$IPS_LINK',
                     '$IPS_REMOTE_ADDR', '$IPS_DIRECTION', '$IPS_DURATION', '$IPS_COMPONENT',
                     '$IPS_REMOTE_HOST', '$IPS_STATUS', '$IPS_STATUSTEXT' );

$eventIDs = IPS_GetEventList();
$found = false;
$anzahl = 0;

foreach($eventIDs as $id)
{
    if($id != $IPS_SELF)
   {
      $event = IPS_GetEvent($id);
      $data = $event['EventScript'];
      foreach($search as $befehl)
      {
         if(!(strpos($data, $befehl) === false))
            {
            $found = true;
            $anzahl++;
            echo "Event: ".IPS_GetName($id)." #".$id.", Systemvariable: ".$befehl.", gefunden.
";
         }
      }
    }
}

echo "\rEs sind noch ".$anzahl." Änderungen bei den Events zu machen!

";

$scriptIDs = IPS_GetScriptList();
$found = false;
$anzahl = 0;

foreach($scriptIDs as $id)
{
    if($id != $IPS_SELF)
   {
       $script = IPS_GetScript($id);
      $data = file_get_contents(IPS_GetKernelDir()."/scripts/".$script['ScriptFile']);
      foreach($search as $befehl)
      {
         if(!(strpos($data, $befehl) === false))
            {
            $found = true;
            $anzahl++;
            echo "Script: ".IPS_GetName($id)." #".$id.", Systemvariable: ".$befehl.", gefunden.
";
         }
      }
    }
}
echo "\rEs sind noch ".$anzahl." Änderungen bei den Scripts zu machen!

";
?>

Gruß,
Christian.

hatte wieder mal Tomaten auf den Augen, hatte das " übersehen, muss auch versetzt werden. war wohl etwas zuviel copy and paste heute :rolleyes:
Bin jetzt bei 0 Änderungen :cool:
danke nochmal

Falls bei euch die $IPS_* Variablen nicht korrekt emuliert werden. Hier die Lösung: http://www.ip-symcon.de/forum/f18/falls-ips_sender-andere-ips_-undefiniert-16718/#post145408

paresy

IPS_GetVariableID

Scheint schon in der Version 2.5 nicht mehr verfügbar zu sein, habe sie ersetzten müssen…

Das ist korrekt. Altlasten aus Version 1.0…

paresy

Hallo

Eine Frage für was sind diese Scripten den gut???

Ich verstehe da nur Bahnhof!:confused:

Mfg

Es gibt Änderungen an verschiedenen Befehlen und Schreibweisen der Befehle. Die Scripte helfen die betroffenen Teile zu finden.

Gruß
Bruno

Hallo

Heist das dann wenn ich was steuern möchte zbs ein oder ausschalten dann brauche ich einen Script??

und wenn ich da dann einen Fehler machen dann helfen die den fehler zufinden??

Mfg

Wenn du noch keine Skripte geschrieben hast, dann ist das hier quasi ziemlich unwichtig für dich :wink:

paresy

Ok ja da hast recht habe keine geschrieben!

Muss ich den für meine Anliegen welche schreiben!

hier der Link!

Beitrag 46!

Hoffe doch nicht oder??

Hallo,

das ist nicht der Beitrag 28 sondern Beitrag 46.
Die Zahl 28 steht für deine geposteten Beiträge hier im Forum.

Upps Danke dir!

…und was ist eigentlich mit den low level Befehlen?

Gibt es auch dort Änderungsbedarf, also wegfallende / ersetzte Befehle per V2.5 mit oder ohne Karrenzzeit bis zur V3.0?

Wie sieht es denn nach dem Wegfall von $IPS_* mit den Globals aus?

$_SERVER
$argv
$_GET

usw?

jwka

Ähm,

wenn $IPS_* wegfällt. Wäre es schön, wenn die Codevorlagen bei Ereignisserstellung auch das neue Array ausspucken würden.
Ich hab seit 2.5 zig Ereignisse angelegt, die ich jetzt alle konvertieren muss. :frowning:

cu…

Ich habe mir eine ips_preprocessor.php geschrieben, die mir die Rückwärtskompatibilität sichert.

Einerseits bekomme ich so auch schon in den Versionen vor 2.5 ein eigenes Array in den superglobalen $_SERVER / $_ENV zur Verfügung gestellt (und dort rein wird später schlicht $IPS kopiert) und andereseits werden alle $IPS* weiterhin anlegt und stehen wie früher zur Verfügung. Das ganze kann parametergesteuert noch feinjustiert werden.

Binde ich per autoprepend bzw. per include Zeile in alle alten Scripte ein.

Damit werde ich auch die weggefallenen IPS_xxx() Funktionen zur Verfügung stellen.

Neue Scripte kann ich so nach neuen Regeln proggen, aber alte Scripte muss ich nicht (an vielen Stellen) anfassen.

Bei Interesse kann ich das Script zuschicken.

jwka

Das ist ein Fehler. Fix im nächsten Update.

paresy

hi jwka

ich habe ähnliche Probleme mit massig Scripten. Der Ersatz ist nicht einfach der Austausch der Befehle. Ich kann z. B. nicht einfach eine parentID generieren, das ist recht aufwändig… Die Vars sind da schon einfacher. Hier empfehle ich z. B. TextCrawler. (Suche+Ersetzen in allen Scripten auf einen Rutsch).

Das wäre eine gute Idee. Stell es doch einfach in diesen Thread als Script oder Anhang.

Grüße
Fabian