Hallo,
vielleicht habe ich es bisher übersehen - vielleicht kann mir jemand sagen nach welchem Stichwort ich suchen muss.
folgendes:
Ich habe in einem Raum eine Lampe und einen Lichtsensor(Relaiskontakt auf Eingang).
Wenn ich nun über IPS die Lampe einschalte, möchte ich den Status für die Lampe NICHT emulieren, sondern ich möchte den tatsächlichen Status über den Lichtsensor erfassen. Im Idealfall sollte eine Fehlermeldung kommen, wenn ich das Licht eingeschaltet habe, aber der Lichtsensor sagt, das Licht ist NICHT an.
Genau. Das emulieren geht bei meiner Lampe. Aber wo kann ich nun meinen Helligkeitssensor einbinden. Irgendwo muss ich IPS doch sagen: frage den Eingang ab ob das Licht wirklich an ist.
Ok, also war ich nicht soooo falsch, wie man hier hinter den Türen unterstellt hat
Zurück zum Thema…
Du hast den Lichtsensor wie im IPS eingebunden? Hast du den Status vom Lichtsensor schon in einer Variable? Welche Hardware im Einsatz?
Wenn du den Lichtsensor als Variable im IPS hast (oder per Skript ansprechen kannst), dann kannst du dir ein IPS-Skript in PHP schreiben, welches beim Licht ein-/ausschalten ausgeführt wird, prüft ob der Lichtsensor Licht erkennt oder nicht und dann entsprechend zurückmelden und die Variable auf true/false setzen.
Hallo Chris,
ja das wollte ich wissen - also muss ich zur Überwachung ein Skript schreiben. Ich habe den Ausgang und auch den Lichtsensor als Variablen bereits in IPS funktionsfähig. Auf der Webseite kann ich auch ein/ausschalten - nur eben das Zusammenspiel von Status&Sensor scheitert.
Aber noch mal einen Schritt zurück:
Wenn ich den Status emuliere heißt es doch, dass IPS sich den aktuelle Status merkt(wie er sein müsste). Wie ist es denn zu verstehen, wenn der Status nicht emuliert wird?
Zum Hintergrund:
IPS steuert bei mir einen Relaiskontakt, welcher einen Stromstoßschalter schaltet. Der Stromstoßschalter schaltet die Lampe. Parallel kann ich den Stromstoßschalter aber auch mit einem Taster(ohne IPS; fest verdrahtet) schalten(falls die Steuerung defekt ist). Und nun möchte ich über den Sensor den tatsächlichen Status angezeigt bekommen. Und das bei ca. 40 Stromstoßrelais…
Gruß,
stfan
Edit:
Also wenn ich das richtig verstanden habe muss ich ein Skipt schreiben welches z.b. alle 2 sekunden aufgerufen wird und den Lichtsensor abfragt und entsprechend den Status auf „true“ oder „false“ setzt?
Wenn du den Status emulierst, dann ändert IPS die Licht-Status-Variable auf TRUE, wenn du das Licht einschaltest…und geht davon aus, dass das Licht auch eingeschaltet ist (wartet also nicht auf Rückmeldung - wenn der Aktor selbst den Status zurückmeldet). Wenn du den Status nicht emulierst, dann wird die Variable beim Einschalten des Lichts nicht auf TRUE geschaltet, sondern erst durch die Rückmeldung (wenn der Aktor selbst den Status zurückmeldet - z.B. bei HomeMatic).
Da man Status-Variablen (in dem Fall die von deiner Lampe) nicht schreiben, sondern nur lesen kann, bräuchtest du für jede Lampe eine Hilfsvariable (bitte korrigiert mich, wenn ich hier falsch liege). Diese Hilfsvariablen würdest du ins WebFront verlinken und darüber die Lampen schalten. Diese Variablen brauchen dann unter „Eigene Aktion“ ein Skript von dir. In diesem wird dann jeweils der Befehl für Licht an bzw. aus gesendet, dann einen kleinen Moment gewartet und dann die Lichtsensor-Variable abgefragt. Meldet der Lichtsensor Licht-AN, dann wird die Variable auf TRUE gesetzt und andersrum.
Skript-Beispiel (dieses Skript als eigene Aktion bei der Hilfsvariable eintragen, es wird aufgerufen, wenn du im WebFront auf die Hilfsvariable drückst, um das Licht zu schalten):
<?
$LichtsensorVariable = 12345; // Hier die ID der zugehörigen Lichtsensor-Variable eintragen (in der der Status steht)
if (GetValue($LichtsensorVariable) === true)
{
//Befehl für Licht AUS
IPS_Sleep(250); // 250ms warten
if (GetValue($LichtsensorVariable) === false)
{
SetValue($_IPS['VARIABLE'], false);
}
else
{
IPS_LogMessage("LICHT", "FEHLER - Das Licht wurde nicht ausgeschaltet");
}
}
else
{
//Befehl für Licht AN
IPS_Sleep(250); // 250ms warten
if (GetValue($LichtsensorVariable) === true)
{
SetValue($_IPS['VARIABLE'], true);
}
else
{
IPS_LogMessage("LICHT", "FEHLER - Das Licht wurde nicht eingeschaltet");
}
}
?>
Ich hoffe du konntest mir soweit folgen. Ist sehr theoretisch beschrieben und das Beispiel nur aus dem Kopf gebastelt, aber hoffentlich nachvollziehbar und du kannst darauf aufbauen
Wie gesagt, alles sehr theoretisch und so aus der Ferne schwer von A bis Z zu durchdenken Das Skript würde nur ausgeführt werden, wenn man die Variable im WebFront bedient. In dem Fall wäre es dann wohl sinnvoller mit Events zu arbeiten, welche auf Variablenänderung triggern. Am Besten einen Test-Aufbau machen und alles mal durchspielen
Hallo Chris,
ich habe mir das viel zu kompliziert gedacht. Ich habe einen „PoKey 57E“ zum testen über Modbus angeschlossen.
Hier kann ich Schreib UND Leseadresse verschieden festlegen. Es funktioniert genauso wie ich es haben möchte.
Auf die Schreibadresse kommt mein Ausgang mit Stromstoßschalter und auf die Leseadresse lege ich meine Rückmeldung vom Sensor. Vorraussetzung ist allerdings das beide Adressen auf der selben „übergeordneten Instanz“ sind, aber das sollte machbar sein.
Doch das geht.
Du kannst auch einer Statusvariable ein eigenes Aktionsskript hinterlegen.
Damit ist automatisch jede andere Standardaktion deaktiv.
So dass er jetzt mit Ein/Aus aus dem WF den Tastimpuls senden kann, und die Variable erst umspringt wenn die Leseadresse wirklich auch den neuen Wert überträgt.
Michael
In meiner Version ist es egal ob auf der Weboberfläche „An“ oder „Aus“ angeklickt wird. Es wird IMMER das Skript gestartet, welches erst den Ausgang setzt und nach 1 Sekunde wieder zurücksetzt. D.h. der Stromstoßschalter wird jedesmal betätigt und ändert so seinen Zustand - genauso, wie wenn der Stromstoßschalter vom hardwaremäßigen Taster angesteuert wird, der parallel ohne IPS angeschlossen ist.
Der Zustand wird und abhängig vom klicken angezeigt(es ist ja ein seperater Eingang).
Joo, funktioniert, das muß ich gleich mal in meiner Steuerung umbauen.
So’ne autarke Pokeyssteuerung mit Stromstoßrelais ist was feines, hat mich Markus alias Borastoni drauf gebracht
Der WAF kann eigentlich nie auf Null gehen, Handsteuerung geht immer, Pokeys Dashboard und die Webfront von IP-Symcon ist der Luxus
Wenn man(n) jetzt noch die Zeit, wie lange der Mauszeiger auf dem Button drückt, ermitteln könnte, dann würde ich die Eltakodimmer noch verwenden können.
Vielleicht habt ihr da auch noch einen Tipp für mich?
@Helmut
gehört nicht zum Thema,
aber hast du an den PoKey über I2C einen PCF8574 (Portexpander) angeschlossen bzw weist du wie das geht? Als Sensor kann man den ja leider nicht auswählen… Weißt du, ob es da noch eine andere Möglichkeit gibt?
Nee, aber ich habe einen „Portexpander“ wie im Pokeys-PDF als Platine, kann 32 Relais über ULN-Bausteine treiben, guggst Du:
Dass ich eine neue 24-fach In/Out-Platine habe weißt Du? Kannst Du auch hier sehen.
Bild ist unscharf, setze ich noch in Wordpress besser rein, man sieht oben und unten die Löcher für die Relais-Schraubanschlüsse, links den ExPort-Anschluß vom Pokeys.
Gruß Helmut
Hallo Helmut,
Die 28*230V sieht interessant aus. Ich arbeite gerade an so einer Lösung. Was verbraucht die Karte pro Kanal? Und welche Abmessungen hat die Karte?
Gruss stfan