Dämmerungsschalter FS20 SD und IP-Symcon

Hallo und Gruss an Alle von einem Neuling,

vor einiger Zeit habe ich mich dazu entschieden einige Funktionen in meinem Haus mittels FS20 Komponeten und einer FHZ 1000 zu automatisieren.
Nachdem ich nun aus anderen Gründen einen 7/24 PC laufen habe, bin ich nach einiger Recherche auf eine FHZ 1300 PC mit IP-Symcon Basic umgestiegen, fuktioniert auch alles zu 99% :slight_smile:
Die benötigten Funktionen waren ohne große Kenntnisse zu realisieren.

Jetzt zu meinem Problem.

Über einen Dämmerungsschalter werden in einer Gruppe einige Rolläden gesteuert, unter anderem auch im Gästezimmmer. Jetzt hatten wir Besuch und denen war das öffnen der Rolläden zu früh, worann ich auf die Schnelle aber nichts ändern konnte;).

Ist es möglich den Schaltbefehl des FS20 SD über die FHZ laufen zu lassen, sodass ich hier noch Einfluss auf die Funktion (z.B. Gästezimmer später …) nehmen kann.

Ich habe mir einige Beispiele für andere Funktionen hier im Forum angeschaut, aber Ausdrücke wie, Variable, Script, Trigger sind für mich Böhmische Dörfer.

Kann mir von euch jemand eine Anleitung geben oder eine empfehlen. Ich würde schon gerne verstehen wie so etwas funktioniert.

Hier eine Liste aller Verbauten Komponenten:

  • 1x FHZ 1300 PC mit IP-Symcon
  • 7x FHT 80b
  • 11x FHT 8V
  • 1x FHT 8W
  • 3x FS20 SA
  • 1x FS20 ST-3
  • 3x FS20 SU
  • 5x FS20 RSU
  • 1x FS20 SD
  • 1x FS20 S4A-2
  • 1x FS20 S20-2
  • 1x FS20 RPT-2

Vielen Dank im Voraus für die eventuelle Hilfe

Hallo kds8,

dein Problem habe ich verstanden, allerdings bin ich mir nicht sicher, welche IPS-Kentnisse bereits vorhanden sind. Einerseits schreibst du dass bereits alles auf IPS umgestellt ist und anderseits sagen dir Variable, Trigger &co. nichts.

Grundsätzlich kannst du es mit einem zusätzlicher TimerEvent lösen.

  • der Dämmerungssenor geht auf true und die Rolläden fahren hoch
    ? wird die FS20 RSU direkt vom Dämmerungssensor gesteuert oder über ein IPS-Script?
    Die weitere Vorgehensweise ist abhängig von der Antwort. Oder anders gesagt, es gibt nur eine Lösung, wenn die Steuerung über ein Script läuft.

Gruß, Peter

Hallo,

ja grundsätzlich ist es das. Wie Pitty schon schrieb, hängt das ein wenig von deiner Konstellation ab…

Ich hatte eine ähnliche Konstellation (FS20 SD mit FS20 MS) und bin auf „vollständig IPS“ umgestiegen, aus ähnlichen Gründen wie Du. Den FS20 SD hast Du schon als Fernbedienung hinzugefügt ?
Dann kannst Du „einfach“ das schalten abfangen (häng einen Event dran, bei „Variablenänderung“) und dann ein skript starten welches die Rolläden hochfährt. Dieses kannst Du dann natürlich auch verzögern…

Gruß
mcbelly

Hallo zusammen,
zuerst einmal danke für die Antworten.

dein Problem habe ich verstanden, allerdings bin ich mir nicht sicher, welche IPS-Kentnisse bereits vorhanden sind. Einerseits schreibst du dass bereits alles auf IPS umgestellt ist und anderseits sagen dir Variable, Trigger &co. nichts.

Für die Umstellung brauchte ich keine Variable, Trigger &co manuell zu bearbeiten, dafür gibt es Vorgaben im Programm die ich genutzt habe.

Den FS20 SD habe ich als Fernbedienung schon hinzu gefügt.

wird die FS20 RSU direkt vom Dämmerungssensor gesteuert oder über ein IPS-Script?

Die RSU’s werden zur Zeit direkt vom Dämmerungssensor gesteuert.

Dann kannst Du „einfach“ das schalten abfangen (häng einen Event dran, bei „Variablenänderung“) und dann ein skript starten welches die Rolläden hochfährt. Dieses kannst Du dann natürlich auch verzögern…

Das Wort einfach hast Du schon richtig in Gänsefüsschen gestellt.

Ich habe dafür leider keinen Plan :frowning:

Vieleicht könntet ihr mir dabei helfen.

hallo kds8,

wenn du die Rolläden per Script steuern möchtest und keine Fernbedienung benutzt, musst du zuerst die direkte Steuerung durch den Dämmerungssensor aufheben (DS und RSU bekommen unterschiedliche FS20-Adressen).

Dann soltest du dir ShutterControl ansehen Shutter Control: IP-Symcon :: Automatisierungssoftware

Zum testen würde ich erstmal einen neuen Pseudo-RSU einrichten, damit die bestehende Steuerung nicht gefährdet wird.

Der Dämmerungssensor hat ja 2 Schaltpunkte bzw. zwei Adressen. Zu jeder Adresse gibt es eine Status-Variable. Diese wird zum starten (triggern) des PHP-Programms gebraucht.

Dann muss eine Programm-Instanz angelegt werden. Dort kommen dann die Befehle zum hochfahren bzw. zum verzögerten hochfahren rein. Wenn du nicht weisst, wie das zu programmieren ist, werden wir uns auch da rantasten. Dann kannst du erstmal nur ein Test-Befehl reinschreiben:

echo "Rollo wird hochgefahren";

An diese Programm-Instanz wird ein Ereignis angelegt, das sich auf die vorher beschriebene STatus-Variable des DS bezieht (Parameter „bei bestimmten Wert“ Wert=true). Nun wird immer das Programm gestartet, wenn die Variable auf true schaltet.

Viel Spass beim ausprobieren und nicht aufgeben, es ist anfangs unüberschaubar. Aber wenn man etwas verstanden hat, weiss man wie einfach und mächtig IPS ist.

Gruß, Peter

Shutter-Control hat sich bei mir für FS20 nicht bewährt. Fahre die Rolladen mit SwitchDuration die gemessene Zeit nach unten (false) oder oben (true).

Gesteuert (Ereignis zum Schliessen) wird das ganze über den FS20SD (Änderung der Variable auf true) sowie den Astro-Timer (der schnellere siegt). Parallel kann man auch noch über die Zeit steuern.

Gruß
Bruno

Hallo pitty,
hallo Powerfreddy,

aus beruflichen Gründen habe ich leider nur begrenzte Zeit mich um mein Problem zu kümmern.
Eure Lösungen habe ich mir angeschaut. Was Astro Timer ist habe ich nicht herausgefunden.
Beide Lösungen scheinen mir sehr komplex, ich möchte nicht einstellen wie weit die Rolladen herunter oder herauf fahren, bei mir geht es nur um auf und zu.
Nun habe ich hier im Forum einen Link zu einem YouTube Film über das Schalten einer Steckdose gefunden. Könnte ich die Rolladen nicht auf diese Weise steuern?
Die Frage wäre dann, da ich zurzeit vier Rolladen über den DS in einer Gruppe ansteuere, muss man dann vier Skripte schreiben oder gibt es dort auch so etwas wie Gruppen.
Weiter ist mir aufgefallen das in dem Filmchen der Wert immer 17 oder 0 in Device Data ist, mein DS jdoch auf der Gruppenadresse als Wert 17/19/oder 20 aus gibt?
Sicherlich könnte ich anfangen zu probieren, doch wie bereits gesagt ist meine Zeit für so etwas begrenzt.

Vielen Dank für Eure Mühe

OK, ein bisschen musst Du aber selber machen, um das Konzept zu verstehen. Ich weiss selber wie schwierig der Anfang mit IPS ist. Also hier mal eine „Klick Anleitung“ für meine beschriebene Lösung (Aus dem Kopf, also mag sie unvollständig sein).

  1. Du erstellst ein Skript welches Deine Rolläden hoch oder runter fahren lässt. Das sieht ungefähr so aus:

<?
FS20_SwitchMode (12345, true);
?>

12345 steht für die ID Deiner Rolläden, true oder false fähr hoch oder runter - einfach mal probieren.

Das speicherst Du unter einem Namen, den Du wieder erkennen kannst.

Ach ja Skript erstellen: Irgendwo in der logischen Ansicht rechte Masutaste und dann „Skript erstellen“ - erstmal durchklicken, das Skriptfenster kommt dann von alleine. An eine sinnvolle Stelle verschieben kannst Du es dann immer noch…

  1. Bei Deinem FS20 SD klickst Du mit der rechten Maustaste auf die Variable, die du überwacht haben willst (vorher die Instanz aufklicken, da kommen dann Variablen mit den von dir vergebenen Adressen, entweder true oder false) und merkst Dir die ID.

  2. Auf dein Skript, klickst Du mit der rechten Maustaste und sagst „Ereignis hinzufügen“. Im folgenden Fenster wählst Du die Variable, deren ID du dir gerade gemertk hast und „Wenn Variable einen bestimmten Wert hat“ aus und setzt als Wert „true“. Klick auf Weiter, hier kannst Du dann das Skript auswählen welches ausgeführt werden soll. Hier ist das Skript schon voreingestellt und dann kannst Dich einfach durchklicken.

  3. Das Gleiche (1-3) jetzt noch einmal für „false“.

Das mal so als Grundgerüst. Um es letztendlich vollständig zu machen, müsstest Du Hilfsvariablen erstellen (Neue Variable, Boolean) in die der FS20 SD seinen Wert schreibt (also den SD auf neue Adressen programmieren) und diese mit dem Skript überwachen. Dann wird die Steuerung komplett von IPS übernommen - funktioniert dann aber ohne auch nicht mehr (so ohne weiteres).

Wie man ein Ereignis verzögert machen wir im nächsten Schritt. Oder du schaust dich mal in den veröffentlichten Skripten um, da passiert sowas ständig ^^

Astro Timer: http://www.ip-symcon.de/forum/f53/automatischer-skriptstart-astronomischen-ereignissen-sonnenaufgang-daemmerung-8059/

Gruß
mcbelly

Hallo kds8,

der Astro-Timer ist ein Programm zur Berechnung der verschiedensten Sonnenauf-und Untergangszeiten und zum setzen von eigenen Timer-Events auf Basis dieser Zeiten. (z.B. Timer für Rollo runterfahren 30 Min. nach Sonnenuntergang). Das Programm und weitere Informationen findest du über die Forensuche.

der Ansatz von Powerfreddy kommt deinem Wunsch ja sehr nahe und ist auch weniger komplex. Du musst nur einmalig die Zeit messen, die für das Hoch- und Runterfahren benötigt wird.
Dann brauchst du nur noch einen Befehl (FS20_SwitchDuration) pro Rollo und Richtung. Diesen Befehl kannst du direkt beim Timer-Event hinterlegen oder aber in einem Programm unterbringen. Über Gruppenadressen wurde hier im Forum auch schon diskutiert, aber ich glaube das ist für IPS nicht sinnvoll bzw. gar nicht möglich.
Die Werte aus DeviceData werden m.W. in IPS nicht benötigt.

Da du aber einzelne Rollos zu unterschiedlichen Zeiten hochfahren möchtest, wirst du irgendwann ein komplexes Steuerprogramm haben wollen.

Wichtig wäre nun zu wissen, was wirklich für dich wichtig und vorrangig ist, damit man eine leicht und schnell umsetzbare Lösung findet.

Gruß, Peter

Hallo,
nochmals vielen dank an Alle.
Ich denke das Meiste habe ich verstanden und werde jetzt mal probieren wie weit ich komme.:slight_smile:

Gruß

kds8

Hallo zusammen,
habe alle Schaltungen des DS nach Anleitung von mcbelly erstellt.
Es funktioniert allerdings nicht immer. Ist es vieleicht ein Problem, dass ein Ereignis des DS 6 Skripte auf einmal ausführt (2x Licht und 4 Rolladen) ?
Kann man die Ausführung verzögern? Mir wäre es egal wenn z.B. die Rolladen im Abstand von x Minuten hintereinander angesteuert werden.
Wenn ja wie macht man das?

Die Skripte sehen alle ähnlich aus z.B.:

<?

FS20_SwitchMode (38364 /[Gästezimmer Rolladen links]/, false);

?>

Plus das zugehörige Ereignis Statusänderung true/false.

Gruss an die Profis

Hallo kds8,

das ist doch schonmal ein guter Anfang.

FS20 ist allerdings dafür bekannt, nicht immer richtig zu schalten und ist z.B. sehr anfällig gegen Funkstörungen. Ob der Sendeabstand zu kurz ist kann ich technisch nicht beurteilen, aber ich meine hier im Forum sowas schonmal gelesen zu haben.

Aber nun zu Löungsansätzen.

Wenn du die 6 Aktoren aufgrund einer Statusänderung gleichzeitig schalten willst, kannst du alle Befehle in ein Programm schreiben.
Dann kannst du mal versuchen zwischen jedem senden eine kurze Pause einzufügen.:

	// Spot-Light einschalten
   FS20_SwitchMode(33860 /*[Räume\Kino\Spot-Light]*/, true);
   IPS_Sleep(600);

   // Barlicht für 300 Sekunden einschalten
   FS20_SwitchDuration(39150 /*[Räume\Kino\Barbeleuchtung]*/, true, 300);
   IPS_Sleep(600);

Es wurde auch schonmal diskutiert den FS20-Befehl nach einer kurzen Wartezeit zu wiederholen.

Gruß, Peter

Komisch ist…vielleicht nur bei mir so das fs20 bei gewissen Komponenten superzuverlässig funktioniert… Super gut seit echt Jahren läuft bei mir genau der daemmerungssvhalter.am schlimmsten die ks300…da musst ich am Schluss die fhz fast an die ks rankleben das der empfang noch da war. Wiederholtes senden gerade zb beim tfk Kontakt in der ausnahmeposition war auch ein muss…

Danke an pitty

funktioniert sehr gut nach Deiner Anleitung. Desto mehr man durchblickt,
desto mehr Spass macht die Sache.:slight_smile:
Los seit ihr mich allerdings noch nicht.
Wie gesagt schaltet der DS mehrere Lichter und Rolladen jetzt problemlos.
Es sind zwei Rolladen in unserem Gästezimmer dabei, nun möchte ich diese bei Bedarf später hoch fahren wenns mal später geworden ist :wink: und unsere Gäste im Sommer nicht morgens schon um 06:00 in die Sonne schauen wollen.
Gibt es hierfür eine einfache Lösung?
Wenn ich ein zweites Skript brauche, wie verzögere ich dann um z.B. 3 Std.?
In der Doku steht, dass IPS_Sleep nur für kurze Verzögerungen zu gebrauchen ist.

Gruß

kds8

Hallo kds8,

freut mich, dass es funktioniert und du die ersten „IPS-Infektionserscheinungen“ hast :slight_smile:

Für die spätere Steuerung einzelner Rollos gibt es verschiedene Lösungen.

Du musst in deinem Steuerprogramm einen Timer setzen (entweder Start um XX:XX Uhr oder Start in X Minuten).
Beispiele findest du hier im Forum (Script verzögert ausführen).

Da du aber die Rolos über den DS steuerst, ist es sinnvoll einen Timer auf eine bestimmt Uhrzeit zu stellen.
Dann musst du im Programm abfragen, ob der Programmaufruf durch den DS oder den Timer erfolgt.
Ich habe nur einen einzigen Homematic-Rollo-Schalter, den ich folgendermassen steuere:

  • hochfahren, wenn Ds hell anzeigt, aber nicht vor XX:XX Uhr (einstellbar je Wochentag, fest im Programm. Könnte man auch über Variable lösen)
  • runterfahren bei Astrozeit „zivile Abenddämmerung“, aber nicht wenn das Gartenlich an ist und nicht vor 17:00 Uhr
  • wenn der Automatik-Schalter aus ist, wird das Programm nicht ausgeführt

Hier das Steuerprogramm, da kannst du sicherlich was verwenden. Die Homematik-Befehle müsstest du dann durch FS20 ersetzen.
Es gibt hier im Forum sehr ausgefeilte Programme, sind aber für Anfänger in PHP sehr schwer zu verstehen sind. Ich stecke da auch noch in den Grundkenntnissen, aber man lernt ständig was dazu.

<?

 // Steuerung Rollo Wohnzimmer ohne Shutter-Control
 
 $rollo = 25257 /*[Räume\Wohnzimmer\Rollo]*/;
 $position = GetValueFloat(27104 /*[Räume\Wohnzimmer\Rollo\LEVEL]*/);
 $auto = GetValueBoolean(14912 /*[Räume\Wohnzimmer\Rollo\Automatik]*/);
 $wochentag = GetValueString(36047 /*[Scripte\Datum-Uhrzeit\Tagname]*/);
 $ssmm = GetValueString(24846 /*[Scripte\Datum-Uhrzeit\SSMM]*/);
 
 IF ($auto == true)
 {
 
 // Up-Time je Wochentag festlegen
  $uptime = "08:00";
  switch ($wochentag)
  {
	case "Montag":
	   $uptime = "06:15";
	   break;
	case "Dienstag":
	   $uptime = "06:15";
	   break;
	case "Mittwoch":
	   $uptime = "06:15";
	   break;
	case "Donnerstag":
	   $uptime = "06:15";
	   break;
	case "Freitag":
	   $uptime = "06:15";
	   break;
	case "Samstag":
	   $uptime = "08:00";
	   break;
	case "Sonntag":
	   $uptime = "08:00";
	   break;
	}

 
  IF ($IPS_SENDER == "Variable")
   {
      switch ($IPS_EVENT)			// enthält die ID des auslösenden Ereignisses
			{
			case 47782:					// es wird hell
				if ($ssmm < $uptime) // zu früh
				   {
				      // timer auf $uptime stellen
				      $datum = GetValueString(50360 /*[Scripte\Datum-Uhrzeit\JJJJMMTT]*/);
 						$timer = 28721 /*[Räume\Wohnzimmer\Rollo\Steuerung\]*/;
 						$tag = substr($datum, 6,2);
 						$monat = substr($datum, 4,2);
 						$jahr = substr($datum, 0,4);
 						$start_stunde = $std = substr($uptime,0,2);
 						$start_minute = $min = substr($uptime,3,2);
 						$start = mktime($start_stunde, $start_minute, 0, $monat, $tag, $jahr);
 						IPS_SetEventCyclicDateBounds($timer, $start, 0);
 						IPS_SetEventCyclicTimeBounds($timer, $start, 0);
					}
				elseif ($position < 1)
				   HM_WriteValueFloat($rollo, "LEVEL", 1.0);
				break;

			case 45499:					// es wird dunkel
			   $nop = GetValueBoolean(59754 /*[Räume\Garten\Gartenlicht\Status]*/);
				IF ($ssmm < "17:00")
	   			$nop = true;		//rollo bleibt oben
			   IF (($nop == false) && ($position > 0))
					HM_WriteValueFloat($rollo, "LEVEL", 0.0);
				break;

			default:
				// ...
				break;
			}

	}

 IF ($IPS_SENDER == "TimerEvent")
   {
      IF ($position < 1)
			HM_WriteValueFloat($rollo, "LEVEL", 1.0);
	}


}
//              HM_WriteValueFloat($SC_INSTANCE, "LEVEL", 0.0);
//DIRECTION_UP:
//              HM_WriteValueFloat($SC_INSTANCE, "LEVEL", 1.0);

	
?>

viel Spass, Peter

Bevor ich vielelicht etwas längeres schreibe, zwei Fragen:

1.) Ist der RPT in Deinem Setup aktiv, also benutzt?

2.) Sehe ich es richtig dass Du noch immer den SD direkt an die Adressen der MRU senden lässt?

jwka

Hallo jwka,

1.) Ist der RPT in Deinem Setup aktiv, also benutzt?

Was ist der RPT :confused::confused:

2.) Sehe ich es richtig dass Du noch immer den SD direkt an die Adressen der MRU senden lässt?

Ich weiß zwar nicht was der MRU ist :confused: aber der SD sendet an die FHZ.

Gruss

kds8

@kds:
Sorry, MRU sollte RSU heissen.

1.) RPT:
Letzte Zeile Deiner Liste im ersten Post: RPT-2. Das ist ein Funk Repeater. Der schickt alle empfangenen Funk-Telegramme nochmals raus.

2.) Klar schickst Du an die FHZ, weil ja eben alle gesendeten Telegramme jeden Empfänger erreichen und die FHZ wie jeder Empfänger auch jedes Telegramm aufnimmt (aber nicht jeder Empfänger reagiert auf jedes Telegramm) und an IPS weiter reicht.

Nur: Mit welcher Empfängeradresse schickt Dein SD sein Telegramm raus? Und welche Empfänger-Adresse haben Deine RSU?

Ich vermute, Dein SD schickt noch immer mit einer Gruppenadresse, die Du in Deinen Rolladenaktoren programmiert hast oder hast Du ihn inzwischen umprogrammiert?

jwka

Hallo jwka,

Ich vermute, Dein SD schickt noch immer mit einer Gruppenadresse, die Du in Deinen Rolladenaktoren programmiert hast oder hast Du ihn inzwischen umprogrammiert?

Nein mein SD schikt an Einzeladressen er ist umprogramiert.

Ist der RPT in Deinem Setup aktiv, also benutzt?

Wie kann man den in IPS integrieren, der ist doch Sender und Empfänger und wozu wäre das wichtig??

Habe mal eine Übersicht meiner Adressen als Anlage beigefügt.

Gruß

kds8

Zuordnung Funkschalter.pdf (60.3 KB)

Ok. Die Adressen sehen mal gut aus. Ich wollte nur sicher stellen, dass der SD nicht direkt die Rolläden steuert.

Du hast also ein (oder zwei) Script(e), das(die) durch das Funksignal des SD getriggert werden.

Ich würde das nun so machen, dass im Script, welches durch den SD getriggert wird, NUR die Rolläden, die immer runter sollen, direkt gesteuert werden.

Für die anderen würde ich ein zweites Script anlegen, welches einen Timer Event bekommt. Diesen „stellt“ das „SD-Script“ auf die gewünschte Nachlaufzeit.

Wenn Du es noch komfortabel machen willst, kannst Du die Nachlaufzeit in einer Variablen halten und diese im Script auslesen.

Grundsätzlich kannst Du auch alles in einem Script abhandeln, dann ruft der Timer-Event dasselbe Script nochmals auf und über die Abfrage des Triggers ($IPS_Sender=„TimerEvent“) kannst Du unterschiedliche teile des Scripts laufen lassen.

Beispiele dazu (beidem) findest Du im Forum zuhauf.

Noch ein Wort zum RPT: Der dupliziert „stumpf“ jedes Telegramm und schickt es nochmals raus.

Sei Dir im Klaren, dass die FHZ alle Funksignale doppelt bekommt und dem entsprechend alles immer zweimal abarbeitet. Das kann durchaus später mal zu unerwünschten Nebeneffekten führen.

jwka