Zurück   IP-Symcon Community Forum > IP-Symcon 2.x > Allgemeine Diskussion

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 04.06.09, 10:47
Senior Member
 
Registriert seit: Jun 2007
Beiträge: 658
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
Mit Zitat antworten
  #2 (permalink)  
Alt 04.06.09, 15:25
Benutzerbild von Horst
WebFront Developer
 
Registriert seit: Aug 2008
Ort: Sereetz
Beiträge: 1,641
Standard

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

    foreach(
$IDs as $ID)
    {
        echo 
"Nr. ".$ID." lebt!\n";
    }
?>
Das darfst Du jetzt noch sinnvoll ausbauen.
__________________
Horst
Mit Zitat antworten
  #3 (permalink)  
Alt 04.06.09, 16:07
Senior Member
 
Registriert seit: Jun 2007
Beiträge: 658
Standard

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
Mit Zitat antworten
  #4 (permalink)  
Alt 04.06.09, 16:31
Benutzerbild von Horst
WebFront Developer
 
Registriert seit: Aug 2008
Ort: Sereetz
Beiträge: 1,641
Standard

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
Mit Zitat antworten
  #5 (permalink)  
Alt 04.06.09, 16:34
Benutzerbild von Tonic1024
Freak
 
Registriert seit: Sep 2005
Ort: Cuxhaven
Beiträge: 5,020
Standard

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
__________________
www.Tonis-Welt.com
01001000 01100101 01101100 01101100 01101111
01110111 01101111 01110010 01101100 01100100
Mit Logik kommen wir hier nicht weiter...

_________________________________
Geändert von Tonic1024 (Morgen um 14:76 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 04.06.09, 16:41
Senior Member
 
Registriert seit: Jun 2007
Beiträge: 658
Standard

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?
Mit Zitat antworten
  #7 (permalink)  
Alt 04.06.09, 16:53
Benutzerbild von Horst
WebFront Developer
 
Registriert seit: Aug 2008
Ort: Sereetz
Beiträge: 1,641
Standard

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
Mit Zitat antworten
  #8 (permalink)  
Alt 04.06.09, 17:04
Senior Member
 
Registriert seit: Jun 2007
Beiträge: 658
Standard

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
Mit Zitat antworten
  #9 (permalink)  
Alt 04.06.09, 17:43
Benutzerbild von Tonic1024
Freak
 
Registriert seit: Sep 2005
Ort: Cuxhaven
Beiträge: 5,020
Standard

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
__________________
www.Tonis-Welt.com
01001000 01100101 01101100 01101100 01101111
01110111 01101111 01110010 01101100 01100100
Mit Logik kommen wir hier nicht weiter...

_________________________________
Geändert von Tonic1024 (Morgen um 14:76 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 04.06.09, 18:07
Benutzerbild von Horst
WebFront Developer
 
Registriert seit: Aug 2008
Ort: Sereetz
Beiträge: 1,641
Standard

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
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


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


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0