+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 20
  1. #1
    Registriert seit
    Jun 2007
    Beiträge
    796

    Standard Scripte mit Variable / oder Funktion einbinden

    Hallo zusammen,
    vielleicht hab ichs in der Doku nur überlesen oder ich finde es einfach nicht.

    Sachverhalt: Ich hab im Haus ca. 30 (Endausbau) 1-Wire Temperatursensoren in der Wand die die Temperatur dort messen sollen.

    Nun möchte ich überall eine Abfrage machen, ob der Sensor noch läuft. Das habe ich bereits bei einem auch über ein kleines Script mittels Abfrage der Updatezeit gelöst. Das Problem ist, dass ich gerne Redundanz vermeiden würde, und nicht das Script 29 mal bei den anderen Sensoren kopieren möchte.

    Wie baut man sich hier eine eigene Funktion der ich Variablen übergeben und Variablen zurückbekomme?

    Gruß und Thanks for help

    Kai

  2. #2
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    PHP-Code:
    <?php
        $IDs 
    = array(123452345634567);

        foreach(
    $IDs as $ID)
        {
            echo 
    "Nr. ".$ID." lebt!\n";
        }
    ?>
    Das darfst Du jetzt noch sinnvoll ausbauen.
    Horst

  3. #3
    Registriert seit
    Jun 2007
    Beiträge
    796

    Hi Horst,

    danke fürs erste Feedback. Ich bin aber noch so gut wie blutiger Anfänger.
    Gibts irgendwo ein kleines Tutorial, wie ich ein normales Script in eine Funktion in Variablen umwandel. Ich hab früher mal ein Jahr Borland Pascal 7 programmiert. Da gabs so procedures auch. Die haben dann ne aufgabe erledigt und das ergebnis zurück gegeben.

    ich vermute ja dass in dem array dann die übergebenen werte stehen sollen, und wie übergeb ich die dann von der hauptebene? Denke ziemlich doofe Fragen, aber hier bei PHP bin ich absoluter Newbie.

    Gruß

    Kai

  4. #4
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    PHP-Code:
    <?php
        
    function addMe ($var1$var2)
        {
            
    $result $var1 $var2;
            return 
    $result;
        }

        echo 
    "1 + 2 = ".addMe(12);
    ?>
    Function funktioniert wie in Pascal. Die Pascal-Procedure erhältst Du, wenn Du bei einer Function einfach kein return einbaust.
    Ansonsten steht unter PHP: Sprachreferenz - Manual alles, was man wissen sollte. Klassen und Objekte, sowie dann auch Namespaces brauchst Du für den Anfang nicht. Im normalen IP-Symcon-Alltag würde mir jetzt eh nicht einfallen, wo sich deren Benutzung lohnen würde.
    Was Du jetzt mit Hauptebene meinst musst Du nochmal genauer erklären.
    Horst

  5. #5
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,614

    Der Aufbau einer Funktion:

    PHP-Code:
    <?
      $test
    =" - Muh - ";
      echo 
    $test;
      
    $test=MachNeuenWert($test);
      echo 
    $test;


      function 
    MachNeuenWert($wert)
      {
         echo 
    "\n Ich bin in der Funktion: ".$wert."\n";
         
    $new " - Mäh - ";
        return 
    $new;
      }
    ?>
    Geht im Prinzip genau wie in Pascal.

    [Edit]Horst, wie schnell tippst du eigentlich? [/Edit]

    Gruß,

    Toni

  6. #6
    Registriert seit
    Jun 2007
    Beiträge
    796

    Super, das bringt mich ne Ecke weiter und werd ich heute Abend testen!!! MERCI!

    Hauptebene meinte ich bei Pascal die Ebene wo das eigentliche Programm ablief, aus dem die Procedures (Unterebene) aufgerufen wurde.


    Achso,...und die Funktion leg ich ganz normal als Script an, richtig verstanden?

  7. #7
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Du kannst so viele Funktionen in deine Skripte schreiben, bis deine Festplatte überfüllt ist . Die Funktionen sind immer nur im jeweiligen Skript verfügbar. Willst Du die auslagern kannst Du in PHP require oder include verwenden.

    Funktionssammlung.php
    PHP-Code:
    <?php
        
    function machDies ($bla)
        {
            echo 
    'Ich sage "'.$bla.'"';
        }

        function 
    addMe ($var1$var2)
        {
            return 
    $var1 $var2;
        }
    ?>
    irgend ein Skript
    PHP-Code:
    <?php
        
    require("Funktionssammlung.ips.php");

        
    machDies("Heute kostet Kaffee ".addMe(105.3)."EUR!");
    ?>
    Die Funktionssammlung.ips.php muss dann im IP-Symcon-Ordner im Unterverzeichnis /scripts erstellt werden. Das andere Skript wird, wenn in IPS direkt erstellt, da automatisch reingepackt.
    Horst

  8. #8
    Registriert seit
    Jun 2007
    Beiträge
    796

    nun bin ich zwar bissl verwirrt, aber ich probier es heute abend daheim einfach.... ich denke dann weiss ich mehr oder kann gezielter fragen!

    Hab jedenfalls nicht vor das script 30 mal zu kopieren für die anderen sensoren ;-)

    Gruß

    Kai

  9. #9
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,614

    Ist eigentlich ganz simpel.

    Du speicherst alle deine Funktionen einfach in einer Textdatei ab. Diese nennst du dann wie du willst oder einfach "Funktionssammlung.ips.php", wie Horst sie genannt hat. Meine hab ich zum Beispiel "functions.php" getauft. Es macht sinn die Datei im Ordner "scripts" abzulegen. Damit sparst du dir lange Pfaddefinitionen angeben zu müssen.

    In jedem Script, in dem du diese Funktionen verwenden willst musst du sie einmal bekannt machen. Das machst du zum Beispiel mit dem Befehl "require". Thats all.

    Gruß,

    Toni

  10. #10
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Wozu willst Du überhaupt 30 Skripte erstellen? Du brauchst doch nur ein Skript, indem Du alle IDs in ein Array packst, das Du dann mit foreach durchläufst. Siehe mein erstes Beispiel. Wenn Du es noch einfacher haben willst lässt Du Dir die Liste mit IPS_GetInstancesByModuleID - IP-Symcon :: Automatisierungssoftware generieren. Die ModuleID für Deinen Sensorentyp kann ich Dir jetzt nicht verraten, da musst Du einfach mal mit IPS_GetInstance - IP-Symcon :: Automatisierungssoftware einen Sensor abfragen und Dir die ModuleID notieren. Wenn Du Dein Kontrollskript hier postest und die ModuleID könnte ich Dir das auch kombinieren. Ist ja auch evtl. was für die Sammlung.
    Horst

Ähnliche Themen

  1. Regenerfassung mit KS300
    Von HJH im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 128
    Letzter Beitrag: 01.08.09, 14:10
  2. Nach einem Tag IPS-Betrieb nur noch FHT-Position-Variablen neu.
    Von nancilla im Forum Allgemeine Diskussion
    Antworten: 15
    Letzter Beitrag: 12.09.06, 14:44
  3. Buffer in der WLAN FHZ ?
    Von guyabano im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 11.06.06, 21:54
  4. FS20 PIRI wieso?
    Von GGGss im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 1
    Letzter Beitrag: 27.01.06, 21:37
  5. Software oder Script ?
    Von guyabano im Forum Allgemeine Diskussion
    Antworten: 30
    Letzter Beitrag: 21.12.05, 13:14