Überläufer

Danke für die schnellen und interessanten Antworten. Ihr seid ja richtig emsig dabei !

Habe mir aber eben in der Zwischenzeit trotzdem ein Buch bestellt. Allerdings kommt die überarbeitete Version erst zum März raus. Also werde ich bis dahin Steiners Ratschläge und Tips nutzen. Und vielleicht reicht das dann ja auch schon wirklich einigermaßen aus.

Allerdings würde ich wohl beim ersten Programmieren so davor sitzen : hehe…

Das Buch „PHP für Dummies“ wurde übrigens sehr schlecht bewertet. Es soll viele Fehler beinhalten.
Ich habe mir nun ein Kinderbuch bestellt und warte sehnsüchtig darauf. Aber bitte nicht wegen dem Titel und Cover lachen !



Bewertungen:

http://www.amazon.de/exec/obidos/ASIN/3826615530/qid=1140533822/sr=1-5/ref=sr_1_10_5/303-6748358-7257030

Ich hoffe, daß ich diesen Hinweis machen durfte.

Gruß

Jörg…

Spitze… Ist echt nix anderes als deine Excel-Formel. Nur die Syntax (Schreibweise) ist halt ein bissel anders. Du bist auf dem richtigen Weg. :slight_smile:

Und joe_vo…

Lass dich nicht abschrecken. Du brauchst kein PHP-Programmierer werden um die paar Befehle zusammenzubasteln. Ist echt nur PHP-Kindergarten was du hier wirklich brauchst.

Irgendwann, wenn du mehr willst, kannst du immernoch versuchen deinen eigenen POP3-Dienst (für E-Mails) aufzubauen und in IPS umzusetzen.

Ich hab eine sehr alte Ausgabe des „Dummie-Buches“. Das war gut… Kann über die Neuen keine Aussage machen… Bei PHP gibt es von Version zu Version zum Teil ziemlich heftige unterschiede. Man muss da unterscheiden. Wenn man natürlich ein Buch zu einer völlig anderen Version hat als man selbst einsetzt stimmen Einzelheiten natürlich nicht. Aber das passiert normalerweise auf einem Niveau, dass zum scripten nicht notwendig ist. Das wichtigste: Mach dich nicht verrückt dabei.

Toni

Immer wenn die Temperatur unter 10 Grad fällt, wird die Heizung für 1 Stunde (10*60 min) eingeschaltet.

PHP-Code:
$temperatur = GetValueFloat(„Temp_Garage“);

if ($temperatur <= 10 ) {

FS20_SwitchDuration($id, True, 10 * 60);

}

Wenn es nur Kindergarten ist, liege ich mit dem Buch vielleicht auch richtig :slight_smile: .

Es geht dann wahrscheinlich bei mir nur um das Einbinden der Scripte in IP-Symcon und vor allem der Schreibweise. Denn die ist mir sehr schleierhaft !

Im oben angeführtem Beispiel verstehe ich auch die Zeitvorgaben nicht. Ist da ein Fehler drin ? Das paßt doch irgendwie nicht .

Ist $ ein Platzhalter für ein wechselnden Wert (Variable) ?

$temperatur = GetValueFloat(„Temp_Garage“);

Ist das die Zuordnung? Oder wofür ist diese Zeile ?

Jörg…

@Tonic1024: Grüße mal Nordholz (MFG3) von mir
Viele Grüße aus Hambergen bei Bremen…

Okay:

Du hast recht. In PHP werden Variablen mit einem $ gekennzeichnet. Variablen sind wie kleine Schubladen in nem Apothekerschrank. Die sehen alle gleich aus. Darum haben sie einen Namen, damit man sie nicht verwechselt. Unsere heisst ‚temperatur‘ und lässt schon Ahnen was sich in dieser Schublade befindet. Eine Temperatur von irgendwas.

GetValueFloat ist eine ‚Funktion‘. Das bedeutet dass ein Stück Code, der immer wieder mal sinnvoll ist, dir zur Verfügung gestellt wird um dir dein Leben einfacher zu machen. GetValueFloat ist der Name dieser Funktion und du kannst sie aufrufen wie ein Klassenlehrer einen Schüler mit Namen. ‚GetValueFloat‘ - Aufstehen!

Um bei diesem Beispiel zu bleiben:
Es handelt sich hierbei um einen guten Schüler, und er weiss sofort was er zu tun hat. Wenn du ihn aufrufst springt er auf und kommt nach forne gerannt um dir einen FloatWert (eine Komma-Zahl) zu geben. Nur Eines weiss er noch nicht… Woher soll er sie dir geben? Das musst du ihm sagen: GetValueFloat(„Temp_Garage“). Temp_Garage ist in diesem Fall eine in IPS angelegte Variable. Nich verwechseln mit einer PHP-Variable, denn die wird ja mit einem $ gekennzeichnet, richtig?

Was macht man als Klassenlehrer vor versammelter Mannschaft mit einer Kommazahl in der Hand? Richtig! man legt sie in einen Apothekerschrank in eine Schublade wo man sie später wiederfindet:

Also:

$temperatur = GetValueFloat(„Temp_Garage“);

Voilá…

Muss nu weg. Wenn du willst bastel ich noch nen kleinen text für die If-Klausel. Für ne Schleife hab ich schon irgendwo was getippt.

@Joe: Wird gemacht… salutier
[kleinlaut]War bei der Lustwaffe :rolleyes: [/kleinlaut]

Und wie wird so ein Script aufgerufen? Oder werden sie alle zyklisch wie bei einer SPS durchgearbeitet? Aber ich werde gleich mal „Schleife“ in der Suche eingeben…

Riesigen Dank für Deine Erklärung. Wenn das Buch so geschrieben ist wie Du erklärst, wäre es ein Volltreffer.

Natürlich möchte ich noch gerne die IF-Klausel erklärt bekommen .

Die Angaben in den runden Klammern sind immer auf IPS bezogen ?

Wie sieht es mit der Zeit aus ? Ist da nichts falsch ?

Jörg…

nee, zyklisch nicht! Denn sonst produzierst du eine Endlosschleife und deine CPU rast auf 100% und nix mehr geht. Die Scripts werden per Timer oder per Event ausgeführt. „Timer“ ist schon selbsterklärend und „Event“ heisst eben, wenn „etwas“ passiert. Das ist in der Regel eine Variable die sicht verändert.

Beispiel: Ein Bewegungsmelder steuert eine Lampe. Also das Script braucht ja eigentlich nur dann durchlaufen werden, wenn der Zustand (die dazugehörige Variable) sich verändert und die Lampe direkt dadurch beeinflusst wird, z.B ein- oder ausgeschaltet.

mfG Franz


$temperatur = GetValueFloat("Temp_Garage"); 

if ($temperatur <= 10 ) {

FS20_SwitchDuration($id, True, 10 * 60);

} 

Das mit der temperatur haste mitbekommen ? okay


if ($temperatur <= 10 ) {mache etwas;}

liest sich 'wenn (variable:$temperatur kleiner oder gleicht wert 10) {mache etwas;}
also bei $temperatur = 5,2°C wird {mache etwas;} ausgefuhrt.
wenn die $temperatur = 11°C dann nicht.


FS20_SwitchDuration($id, True, 10 * 60);

Dies ist wieder eine funktion FS20_SwitchDuration();
‚schalte fur ne bestimmte zeit(instanz-id, an-oder-ab, zeit)‘;
instanz-id findest du im instanz-bild wieder,
an-oder-ab : true of false
zeit : in sekunden.
also hier : 10*60 = 10 minuten.

Das script wird ‚getriggert‘ = lauft einstellbar → ‚Events‘-knopf im script editor.
Im Events-fenster kannst du das script triggern lassen durch oder variablen die sich änderen oder zb. eine Zeit einstellung.

Jetzt probier mal dies zu verstehen:


$temperatur = GetValueFloat("Temp_Garage"); 

if ($temperatur <= 10 ) {

FS20_SwitchDuration($id, True, 10 * 60);

} elseif ($temperatur > 30) {
FS20_SwitchDuration($id-des-lufters, true, 3600);
}

hihi : kommt mir so vor wie ne hausaufgabe.
Also bitte

Fredje

Hallo,
das ganze fängt mir langsam an zu gefallen, gerade wo ich meine „Wenn-Formeln“ wiederfinde. Bei solcher Unterstützung sollte es doch machbar sein.
Bin schon total gespannt, spätestens am Donnerstag oder Freitag werden meine Teile (1300PC und Software) eintreffen.
Da ich am Samstag in Skiurlaub fahre überlege ich mir ob ich nicht mal mein Laptop mitneheme, die 1300PC, eine Funksteckdose und vielleicht zwei 4fach Funkschalter.
Dann könnte ich doch ein bißchen spielen während sich meine Familie „Verlliebt in Berlin“ anschaut.
Meine erste Übung wäre dann Funkschaltsteckdose schalten über PC und über zwei zusätzliche Schalter. Denke bis das dann klappt ist der Urlaub auch rum.:confused:
Gruß
Leomane

Hi,
dann mach mal lieber skiurlaub :slight_smile: - die schaltung dürfte wohl nach 10 minuten fertig sein…

gruß

jörg

Tolles Forum ! Finde ich sehr nett mit den Hilfestellungen von Euch.
Allerdings hätte man wohl dafür einen neuen Thread eröffnen sollen, damit Neulinge vielleicht schneller darauf stoßen und ebenfalls lernen können.

@Fredje: Also bei einer Temperatur <= 10°C wird die Heizung für 10 Minuten zugeschaltet und im gleichen Durchlauf vom Script wird auch gefragt, ob die Temperatur > 30°C ist. Wenn > dann Lüfter für 1 Stunde an.

Es kommen aber dann schon wieder neue Fragen:

1. Instanz-id ist eine Adresse, welche einer Hardware (Schalter) zugeordnet ist ?
Wird diese id automatisch vergeben und ich brauche diese nur in diesem instanzbild ablesen ?
EDIT: Stelle ich mir so vor, nachdem ich mir die Flashanimation „Schritt 2: New Device / Neue Geräte anmelden“ angeschaut habe.

2. Eventknopf im Script-Editor ? Dort kann man vorgeben, bei welchen Bedingungen ein Script überhaupt gestartet wird ?

@Franz:

nee, zyklisch nicht! Denn sonst produzierst du eine Endlosschleife und deine CPU rast auf 100% und nix mehr geht. Die Scripts werden per Timer oder per Event ausgeführt. „Timer“ ist schon selbsterklärend und „Event“ heisst eben, wenn „etwas“ passiert. Das ist in der Regel eine Variable die sicht verändert.

Vielleicht verstehe ich es noch einfach nur falsch. Damit ein sich änderndes Event festgestellt wird, muß doch aber auch ständig in einem „Hauptprogramm“ abgefragt werden ? Wäre das nicht auch eine Endlosschleife ?

EDIT: Oder übernimmt das FHZ1300 diese Aufgabe und übergibt erst Änderungen an den PC ?

Ich muß mir wohl wie Leomane unbedingt die Software und ein paar Steckdosen etc. bestellen, damit ich auch selber experimentieren kann.

Gruß

Jörg… und vielen Dank!

Japp, wenn du sie erstmal siehst wird sich einiges von deinen Fragen selbst erklären. Auch woher die Instanz-ID kommen und wie du dran kommst. Ist ganz simpel gemacht.

Es ist in der Tat so, dass das Hauptprogramm, also IPS, die Variablen ständig kontrolliert. Aber es besteht erstmal ein Unterschied zwischen Einem Programm wie IPS und einem Script, das innerhalb von IPS läuft.

Aber das macht IPS schon für dich, darum musst du dich nicht kümmern. Was dir bei PHP sehr leicht passieren kann ist, dass du mit einem Script eine Variable änderst und damit ein anderes Script anstößt (ausführt), dass nur auf diesen Anstoß (Event oder Trigger genannt) gewartet hat. Diese Scripte sind sehr ungeduldig und laufen sofort los ohne zu warten bis das erste Script fertig ist. Wenn diese beiden, von dir geschriebenen Scripte jetzt sich gegenseitig anstoßen, gleichzeitig laufen und gegeneinander arbeiten hast du ein Problem. Das wäre dann ein klassisches Beispiel für die Endlosschleife, von der hier gesprochen wurde.

Die FHZ musst du dir vorstellen wie die Fernbedienung für deinen Fernseher. Die sagt dir weder, dass dein Film auf dem anderen Kanal gleich anfängt (also keine eingebaute „Intelligenz“), noch schaltet sie irgendwas ohne das du vorher was gedrückt hast.

Die Angaben in Klammern sind immer das was du deinem Schüler zurufst. Das können auch mehrere Werte sein, die dann durch komma getrennt werden. Allerdings kennt der Schüler nur seine feste Reihenfolge an Befehlen. So würde ein Schüler, nennen wir ihn rein fiktiv mal „StringOfChar“, der acht mal die Zahl Neun an die Tafel malen soll so aufgerufen weden:

$tafel = StringOfChar(„9“, 8);

Wenn Du ihm die Zahlen andersherum zugerufen hättest, hätte er sehr wahrscheinlich neun mal die Acht an die Tafel geschrieben. Sicher sind dir die Anführungszeichen aufgefallen. Das war absicht. Worin unterscheidet man die 9 als Zahl von dem Zeichen „9“. Hä? Wie jetzt?

Du kannst dir Neun Kühe auf einer Wiese vorstellen, ja? Oder neun Schüler in deiner Klasse… Was haben die gemeinsam mit einem Symbol, das ausschaut wie ein Kringel und von irgenwelchen Arabern damals mal ausgedacht wurde? Die haben nichts gemeinsam. Darum gibt es die Zahl 9 einmal als Text - das ist quasi das arabische symbol als Teil unseres heutigen Alphabets. Und einmal verkörpert die Zahl 9 eine Summe von Dingen. Damit der Schüler nun aber weiss ob du ihm eine Zahl Neun oder den „Buchstaben 9“ zurufst macht man um Buchstaben und Wörter (in der informatik Zeichenketten oder engl. String) immer diese Anführungszeichen.

Jetzt hast du dir für jede Spezial-Aufgabe einen Schüler antrainiert. Alles kleine Spezialisten. Dass der eine den Job eines Anderen macht wäre undenkbar - So sehr spezialisiert sind die. Aber wie jeder Spezialist brauchen auch unsere kleinen Spezialisten ihr Spezialwerkzeug. Der Schüler von eben, StringOfChar, schreibt dir beliebig oft einen Buchstaben an die tafel. Ein anderer gibt dir einen Floatwert. Das was in den Klammern steht rufst du ihm zu. Klar, dass du jedem was anderes zurufen musst, und zwar in der Reihenfolge und in der Schreibweise (Rufweise) wie er es versteht. Das kann sehr abstrakte Formen annehmen, aber man gewöhnt sich dran.

Toni

Hallo Toni,

war ja ein richtig aufwändiger Bericht von Dir .

Bedanke mich bei Dir !

Die letzten Seiten in diesem Thread helfen dem Verständnis schon ungemein .

Jetzt habe ich nur ein Problem mit dem Kauf. Aber das frage ich im

dazugehörigen Thread „Hausschaltsystem HS485 von ELV“.

Jörg…