IP-Symcon-Anfänger am verzweifeln

Hallo miteinander,

ich habe endlich die IPS-Lizenz bekommen und hab mich schon gefreut endlich loszulegen… Doch ich bin am verzweifeln… :frowning: In der Contronics-Studio-Software war alles so leicht, im IPS schaff ich garnix :wink:

Mein Ziel: Ich will per Rechnersteuerung 5 Nachtspeicher-Heizungen und etwas Licht steuern. Angeschlossen wird alles per Velleman-Board. Die Verdrahtung ist klar. Ein Ausgang wird den Ladestromkreis für alle Speicher steuern, über die anderen soll die Nachtspeicher-Entladung gesteuert werden. Dazu soll es a) einen Automatik-Betrieb über FHZ1300 mit Temperatur-Sensoren und b) einen manuellen Betrieb geben (Heizung an/aus). In Studio hab ich da einfach alles zusammengeklickt, ein paar Scripte geschrieben und gut war… Doch in IPS weiss ich nicht mal, wo ich anfangen soll??? PHP-Grundkenntnisse sind vorhanden, alles andere hab ich gute Quellen… Doch ich weiss nicht, wie ich da wo mit welchen Scripten anfangen soll… Ich habe keine Bedenken, das später alles zu programmieren. Doch wie beginne ich? IPS scheint mir zu hoch zu sein^^ Doch ich will nicht wieder einen Rückschritt zu Contronics machen g

Gruss Daniel

Hallo Daniel,

also erstmal: „Alles wird gut.“
Vieleicht schaust Du Dir das erstmal an:http://www.ipsymcon.de/wiki/index.php/Step_By_Step_Beispiele_in_Flash

Und sei Dir sicher, in diesem Forum erreichst Du Dein Ziel!

Gruß Thomas

Okay… Die Flashs habe ich schon mal gesehen… Haben mir aber nicht wirklich geholfen… Was ich dort z.B. nicht verstehe: Wenn ich an meinem Velleman-Board eine Variable mit einem ditialen Input verknüfe, kann ich einstellen, ob „toggle true“ oder „toggle false“. Muss ich den Wert immer wieder durch Programmierung zurücksetzen? Wenn ich jetzt also über einen Eingang einen Ausgang ein- und ausschalten will… Wie würde ich das machen?

Gruss Daniel

PS: Dass ich das mit dem Forum hier hinbekomme, bin ich überzeugt von :wink:

Dies mal probiert obs dir hilft? Unten ist ein Scriptbeispiel wie man damit arbeitet. Und hier eine übersicht der Velleman-Befehle. Wenn du nicht weiter kommst immer fragen. Hier wird keiner hängen gelassen :wink:

Toni

Hallo Daniel,

Du hast da eine andere Software erwähnt - kann Du mal bitte ein Skript-Beisiel hier posten, damit ich mir ein Bild machen kann …

Das Problem sind sehr kleine Schaltimpulse mit steigender oder fallender Flanke.
Um diese zu erfassen, muss man „zu Fuß“ die zugehörige Status-Variable wieder zurück setzen (siehe Bild).
Damit man keine Endlosschleifen (immer wiederkehrende Trigger) bekommt,
darf man nur mit OnValue triggern oder muss andernfalls folgenden Code voranstellen:

if (GetValueBoolean("Vell_Digi_In_1") == False) {
   return;
}

//   hier geht es dann weiter ...

SetValueBoolean("Vell_Digi_In_1", False);

MST

vielleicht hilft dir auch mein video für ipshomecontrol, da werden auch fs20 geräte eingerichtet (das video bei „ipsymcon“): http://www.ipshomecontrol.de/index.php?option=com_content&task=blogsection&id=2&Itemid=4

Danke Euch allen! Ihr seid klasse! Ich habe die ersten Schritte geschafft :wink:

Ich habe jetzt zwei Scripte geschrieben (Heizung Büro an und aus). Soweit kein Problem, da diese an Ausgang 1 liegt. Ich mach also

VELLEUSB_WriteDigital($iid, 1);

zum einschalten und

VELLEUSB_WriteDigital($iid, 0);

zum ausschalten.

Heizung im Aufenthaltsraum (Ausgang 2), schalte ich über

VELLEUSB_WriteDigital($iid, 2);

ein. Nur wie aus? Wenn ich das richtig verstanden habe ist die Wertigkeit der Ausgabe eine Addition aller geschalteten Eingänge. Also 1 für den ersten, 2 für den zweiten, 4 für den vierten, … Welchen Codeschnipsel nehm ich da, um Heizung 2, 3, 4 ein- und auszuschalten. Weil mein Code für Heizung 1 ist damit ja auch Müll, weil er Heizung 1 ein- und alle anderen ausschalten würde… Wenn ich das richtig verstanden habe :wink:

Gruss Daniel

ich glaub ich habs^^
ich mach mir ne variable, in der die werte addiert werden. in jedem script wird das dann passend addiert oder subtrahiert und am ende der neue wert an das board übergeben
richtig oder falsch gedacht?

falsch gedacht^^ wenn man nämlich jetzt ein paar mal hintereinander auf heizung 1 aus klickt, geht alles nach und nach aus… :frowning:

Mal bitte zur Verdeutlichung immer den PHP Code mit posten, dann wird Dir schneller geholfen.

Gruß Thomas

Hi,

okay… Kein Problem… Mein Gedanke war, um Heizung 1 (an Ausgang 1) auszuschalten, folgendes Script zu nehmen:

$heizungswert == $heizungswert - 1;
VELLEUSB_WriteDigital($iid, $heizungswert);

Problem an der Sache: Wird das Script nun sehr oft gestartet, schalten nach und nach alle Heizungen ab… Das ist nicht Sinn der Sache… Es muss also irgendwie noch eine Abfrage rein, ob es von den Werten her passt, sie überhaupt abzuschalten, also den Wert um 1 herabzusetzen…

Gruss Daniel

Du schreibst einen 8-Bit Wert…

Das bedeutet du musst in Binär umrechnen. Gezählt wird von Rechts.

00000000 ist in Dezimal „0“ und bedeutet: alle aus
00000001 -> „1“ -> Kanal eins ein, Rest ausschalten
00000010 -> „2“ -> Kanal zwei ein und 1 aus (und der Rest auch)
00000011 -> „3“ -> Kanal eins und zwei ein, Rest aus
10000101 -> „133“ -> Kanal 8, 3 und 1 ein, Rest aus…

Verstanden?

Warum nutzt nu nicht WriteDigitalChannel?

Dort steht:

VELLEUSB_WriteDigitalChannel($iid, 2, True);  // Kanal 2 EIN
VELLEUSB_WriteDigitalChannel($iid, 6, False); // Kanal 6 AUS

Gruß,

Toni

Hi,

jepp! Wusste nur nicht, wie ich es damit schalten soll…

Weil ich den Befehl nicht kannte und auch nicht gefunden habe. Vielen Dank! Echt super hier das Forum… Werde wohl zum Stammgast, bis das alles rennt :wink:

Gruss Daniel

Okay… So langsam wird es… g Habe jetzt die Scripte für die Heizung fertig zum ein- und ausschalten… Dazu habe ich je einen Ein- und Ausbutton im Designer angelegt. Läuft auch. Jedoch will ich auch eine Status-Variable für die Anzeige haben. Die läßt sich jedoch irgendwie nicht setzen… In IPS ist die Variable angelegt, diese läßt sich jedoch nicht im Script ändern…

VELLEUSB_WriteDigitalChannel(34567, 6, True);
$Heizung_Ladung = True;

Soll erst den Ausgang 6 einschalten -> geht!
Die Variable soll auf True gesetzt werden -> geht nicht!

Sicher wieder ein doofer Anfänger-Fehler? :wink:

Gruss Daniel

Jo… bestimmt :wink:

Ich nehme an du verwechselst interne PHP-Variablen mit den IPS-Variablen. Der Unterschied wird in Tonis kleinem Programmierhandbuch erklährt. Es ist als fortlaufende Geschichte geschrieben. Das heisst du solltest Vorne anfangen und dich bis zum Ende durcharbeiten, dann ist scripten ein Kinderspiel :cool:

Gruß,

Toni

… und für externen Boolean-Variable (außerhalb des Skriptes)
http://www.ipsymcon.de/~hjh/HelpStudio/html/IPS-Manual/Boolean-Variablen.html

Okay… Ich glaube, ich habe das Grundprinzip kapiert… Mal sehen, wie weit ich komme… Vielen Dank an alle, die mir bis jetzt geholfen haben, besonders Toni und steiner…

Gruss Daniel

Ich dreh hier noch durch g Super Links auf super Anleitungen… Aber irgendwie hab ich mich festgefahren… Variablennamen stimmen alle, die Automatik ist auf True, trotzdem bekomm ich beim ausführen immer nen Fehler… :frowning:

if(GetValueBoolean("Heizung_Automatik") == True;)
{
  if(GetValueFloat("Temperatur_Buero") < GetValueFloat("Temperatur_SOLL_Buero"))
    { IPS_RunScript("Heizung_Buero_ein");
    }
  else
    { IPS_RunScript("Heizung_Buero_aus");
    }
}

Fehler wäre in der ersten Zeile dieses Code-Schnipsels…

Regelnummer 1:
Verheimliche denen die dir Helfen sollen nicht wo dein Problem liegt :wink:

Der Fehler kommt nicht weil er dich ärgern will sondern weil er dir sagt was du falsch gemacht hast. Wenn du die Fehlermeldung nicht selbst interpretieren kannst, dann lass uns das für dich tun.

Wie lautet denn die Fehlermeldung?

Ich rate mal ins Blaue: Das Semikolon in der ersten Zeile ist zuviel… Steht auch in dem Programmierhandbuch wann und wo er Semikolos mag und wann nicht :wink:

Gruß

Toni

Ein weiterer Tipp von mir:
Wenn Du oft die gleichen globale Variablen verwendest wie in Deinem Script z.B.


GetValueBoolean("Heizung_Automatik")

solltest Du diese in einem Script z.B. Konstanten mit:


include("C:/Programme/IP-Symcon/scripts/Konstanten.ips.php");

global für jedes Script verfügbar machen.

So könnte Deine If Schleife dann lauten:


if($Heizung_Automatik == True);

oder einfach nur:


if($Heizung_Automatik) //ist das gleiche wie == true

Gruß Thomas