Rauch- und Wärmemelder GIRA per USB einbinden

Hallo Gemeinde,

nach nunmehr einem Jahr IPS wage ich mich mal aus der Deckung :wink: und stelle aus aktuellem gesetzlichen Anlass meine RWM-Einbindung der GIRA 2330 bzw. GIRA 2341 über das Diagnosetool 2333 vor. Mit drei String-Variablen (Anzeige, Datenspeicherung und Protokollanzeige), einem Skript für die Registervariablen und einem Ausleseskript lese ich täglich einen meiner 22 RWM’s aus und dokumentiere so per Email wenigstens einmal im Monat die aktuellen Warte (Wartung).

Die Kommunikation über COM7 ist mit einer Semaphore geschützt. Mit diesem Detail haben wohl die meinsten COM/USB-Anwender so ihre Schwierigkeiten, da sonst, je nach timing der Kommunkationspartner, die Kommunkation immer wieder mal abbricht.
Wer mehr wissen will, bitte per PM schreiben.

Viele Grüße
nicebits

[14.06.2014] die notwendigen Variabelen aus dem Objektbaum eingefügt. Registervariablen wie gewohnt (auf COM7)

Sehr interessantes Thema, könntest Du evtl. weitere Details im Thread posten?
Ich gehe davon aus, dass dieses Thema viele User interessiert.

Hardware:

22x Rauchwarnmelder Dual/VdS GIRA 2330 mit Funk-Modul GIRA 2341
1x GIRA 2333 Funk-Diagnosetool für Rauchwarnmelder Dual/VdS mit Funk-Modul (per USB am IPS-PC)

Software:
eine RegisterVariable für die COM7 mit Skript zum Auslesen des Daten in den Puffer (mit Semaphore s.u.)

<?

if ($IPS_SENDER == "RegisterVariable") {

	___retry:

	if (IPS_SemaphoreEnter("ComPortRWM", 50)) {
		$RegVarID = 12454 /*[Variablen global\RWM Diagnosetool Register Variable]*/;

		// neuen Daten vom COM-Port hinten an Puffer anhängen
		RegVar_SetBuffer($RegVarID, RegVar_GetBuffer($RegVarID) . $IPS_VALUE);

		IPS_SemaphoreLeave("ComPortRWM");
		}
	else { // Daten müssen gespeichert werden, sonst sind sie weg ...
	   goto ___retry;
	   }
	}
	
?>

ein Kommunikations-Skript kommuniziert mit dem Diagnosetool und sichert die Ergebnisdaten alle 22 RWM in eine String-Variable dauerhaft (serialisierter array)

ein HTML-Render-Skript, das getriggert wird, wenn sich die o.g. Daten der 22 RWM ändern, erzeugt in eine String-Variable HTML für die Darstellung

während der nächsten Zeit habe ich noch eine Variable, mit der ALLE Datendetails (Zeitticker, Meldungsspeicher, zweiten Temperaturwert, …) angezeigt werden und noch eine String-Varibale, die die gesamte Kommunkation zwischen Sender und Empfänger zur Püfung farblich darstellt

seriell/USB mit Semaphore:

Meiner Meinung nach kann man mit dem in der IPS Doku vorgeschlagenen Kommunikation in einem Skript, welches an dem Ereignis hängt, dass etwas EMPFANGEN wird, keine (fehlerfreie) Kommunikation mit Protokollrahmen und Prüfsummen aufbauen. Die Vorgehensweis ist gut geeignet, wenn ein System eigenständig Daten schickt, die man dann in dem RegVarSkript auch gleich verarbeiten kann.

Vor ca. zehn Jahre habe ich mir mit VBA ein Excel-Makro erstellt, das alle 10 min meine drei Luft-Wärmepumpen (2x LWZ303 und 1x LWZ304) per COM3:/4:/5: ausliest und mir im Fehlerfall eine Email schickt. Das EXCEL-Makro habe ich vor ca. einem Jahr nach IPS konvertiert und konnte die Kommunikation nur mit ips_sleep(100) einigermaßen lösen. Leider klappt die Kommunkation nicht immer zuverlässig. Es war mir damals schon klar, dass da einzelne Bytes verlohren gehen und somit die Checksum nicht stimmt und die Wärmepumpe nicht antwortet.

[14.06.2014] Nun habe ih die Kommunkation mit den LWZ303 und LWZ304 auch über Semaphoren abgesichert. Die Wartezeiten konnten alle entfallen und die Gesamtlaufzeit des Skripts wurde um ~80% gesengt. Wichtiger ist aber die DEUTLICH verbesserte Zuverlässigkeit der Skripte. Bei der Gelegenheit gleich die Protokoll für das Auslesen der Betriebsstunden, des Fehlerspeichers und die Warmwassersolltemperatur ersnifft und in IPS nachgebaut!

Jetzt bei der RWM-Kommunikation habe ich mir das nochmals vorgeknöpft. Die Vermutung war: das RegVarSkript hängt die Daten an den Puffer hinten an. Dazu muss zuerst der aktuelle Pufferinhalt ausgelesen werden. Selbst wenn man das in eine PHP-Zeile schreibt, gibt es einen kurzen Augenblick, in dem das andere, reglemäßig aufgerufene Skript ein Zeichen VORNE aus dem Puffer entnimmt und ebenfalls den Puffer zurückschreibt. Über längere Zeit habe ich die Kommunikation überwacht und genau diesen Fall vorgefunden: das RegVarSkript schreibt hinten an den Puffer mehrere Zeichen daran und einen Augenblick später schreibt die AusleseRoutine den Puffer mit dem entnommenen ersten Zeichen (und eben auch OHNE die hinzugefügten Zeichen) wieder zurück.

Das ist ein klassischer Anwendungsfall für Semaphoren. Die Funktion

IPS_SemaphoreEnter("ComPortRWM", 50)

versucht die (exklusive) Semaphore ComPortRWM zu bekommen. Falls das funktioniert hat, werden die Zeihen an den Puffer ANgehängt und die Semaphore wieder freigegeben

IPS_SemaphoreLeave("ComPortRWM");

Sollte das RegVarSkript beim ersten Versuch nciht erfolgreich sein, weil das andere Skript gerade das vorderste Zeichen entnimmt, wird 50ms gewartet und es automatisch NOCHMAL versucht. ERST DANN wird false zurückgegeben, wenn auch der zweite Versuch misslingt. Das unschöne goto ist zwingend nötig, da keine Zeichen verloren gehen sollten und die Daten aus der RegVar in jedem Falle gesichert werden sollen.

Das Gegenstück liest aus dem Puffer das vorderste Zeichen und entfernt es

////////////////////////////////////////////////////////////////////////////////
function fReadRWM($rvRWM, &$sByte)
// liest (genau) ein Byte/Zeichen aus der RegVar von COMx ein
// true = erfolgreich ein Byte gelesen; ggf. Rest im Buffer belassen
// false = nach timeout abgebrochen
{
global $sAllDataRead;

$iTimeout = 5000;
$i = 0;

// warten, bis etwas im Puffer vorhanden ist, oder eine Zeitüberschreitung eintritt
do {
	$sByte = RegVar_GetBuffer($rvRWM);
	$i = $i + 1;
} while (($sByte == "") and $i < $iTimeout);

if ($sByte != "") { // das erste Zeichen aus dem Puffer abschneiden und zurückliefern
	___retry:
	if (IPS_SemaphoreEnter("ComPortRWM", 50)) {
		$sByte = RegVar_GetBuffer($rvRWM);// WICHTIG: nochmal lesen NACH semaphore!
		RegVar_SetBuffer($rvRWM, (strlen($sByte) > 1) ? substr($sByte, 1) : ""); // restlichen Puffer zurückschreiben
		$sByte = substr($sByte,0,1);
		$sAllDataRead .= $sByte;
		IPS_SemaphoreLeave("ComPortRWM");
		}
	else { // das Skript der RegVar hängt gerade Zeichen am ENDE des Puffers an: 50 msec warten
	   $sAllDataRead .= "<font color='#FF0000'>WAITING!!!</font>";
	   goto ___retry;
	   }
	}
return ($sByte != "");
}

Hier ist dann auch ganz wichtig, dass nach dem anfänglichen Warten, dass überhaupt Bytes im Puffer sind, der Buffer NOCHMAL ausgelesen wird, wenn dieses Skript nun die Semaphore (exklusiv) besitzt! Sonst sind die Zeichen, die das RegVarSkript vielleicht zwischenzeitlich auch erst beim zweiten Versuch an das Pufferende angehängt hat wieder weg!

Mein Leseskript für die drei Wärmepumpen werde ich als nächsten umbauen und so absichern. Damit sammelt das RegVarSkript in aller Ruhe und mit schneller Reaktion die Daten von der Schnittstelle. Und auf der anderen Seite kann das regelmäßige Abfrageskript in aller Ruhe aus dem Puffer auslesen: es wird gewartet, bis überhaupt Daten da sind und ein Zeichen nach dem anderen ausgelesen.

Ich hoffe die kleine Einführung in Semaphore ist einigermassen verständlich. Detailsfragen gerne …

Vielen Dank für deine ausführliche Ausführung.
Ich bin noch in der Entscheidungsphase, habe also noch keine Rauchmelder im Einsatz.
Die Gira Melder sind aber definitiv in der engeren Auswahl.
Alternativ habe ich noch den Fibaro FGSS-001 in der engeren Auswahl.

Für die Gira benötigt man nur diese Registervariable und diese Scripte damit das in IPS läuft?
Könntest Du evtl. noch einen Screenshot von der logischen Baumansicht einstellen?

Hallo,

ich habe oben noch den ScreenShot für die vier Variablen:
Sting / ~HTML
String / ~Text
Boolean / ~Switch
String / ~HTML

dazu noch die RegisterVariabel für COM7

das RegisterSkript mit ca. 20 Zeilen
das RWM Ausleseskript mit ca. 330 Zeilen
das HTML-Anzeigeskript mit ca. 180 Zeilen

Ich werde es bei daniel in .at am Wochenende mal remote installieren und dabei noch die eine oder andere Abrundung vornehmen (müssen).

Hallo nicebits,
vielen Dank für deinen tollen Beitrag!

Ich habe aktuell den Gira Rauchwarnmelder mit dem KNX-Modul im Einsatz und bin damit sehr zufrieden. An 3 Rauchwarnmelder komme ich jedoch nicht mit einer KNX-Leitung.

Meine Frage wäre, was man per Diagnosetool alles machen kann?
Kann man auch Befehle wie per KNX-Modul senden?

  • Nebenstellenalarm
  • Quittierung
  • Signalgeber
  • Testalarm

Ist es möglich per Diagnosetool eine Meldung zu erhalten, wenn sich ein Status ändert?
Ich denke daran, die Rauchwarnmelder, welche per KNX angeschlossen sind zu aktivieren, sobald einer der abgelegenen Rauchwarnmelder etwas per Funk meldet.
Oder muss man die einzelnen Funk-Rauchwarnmelder immer bzgl. Statusänderung abfragen?

Könntest du deine Skripte bitte noch für den Download an deinen Beitrag anhängen?

Hallo Jürgen,

vielen Dank für Dein Interesse und die Fragen.

Vorneweg: die Funkverbindung ist (meine Ansicht nach),
1.) wegen Batteriebetrieb, nicht für den „Dauerbetrieb“ gedacht. Ich werde im Kreis herum pro Tag EINEN RWM abfragen und komme so praktisch einmal im Monat an jedem RWM vorbei, bis er sich positiv gemeldet hat. Man sollte also auch den RWM nicht dazu missbrauchen wollen, die Raumtemepratur zu erfassen, sonst ist man vermutlich jedes Quartal am Batteiewwechslen.
2.) wegen Funkkonflikten, auch nicht für eine (schnelle, sofortige) Kommunkation gedacht.
Wer ein GIRA USB- Funkdiagnosetool hat kann unten rechts im Fenster sehen, wie „langsam“ die Kommunikation dauert: a) MelderID prüfen b) Melder in Diagnosemodus schalten und Antwaort abwarten c) Melder abfragen d) Melder wieder aktivieren (macht er nach ca. vier Minuten auch selbst wieder. Und das sind dann ca. 2 min !!! pro Melder

Was man aber lt. meinem Elektroiker machen kann - und das habe ich noch vor - ist, einen GIRA Funkempfänger auf (z.B.) den Stockwerksrepeater uimm Treppenhaus einlernen und dann über ein I/O-Modul auf den Bus geben. So soll die Alarmierung SOFORT funktionieren.

Den Ernstfall habe ich mich so gedacht: Alarme gehen in den Stockwerken auf volle Lautstärke an. Somit auch einer (der Repeater) im Treppenhaus. Ich halte es nicht für sinnvoll, wenn im gesamten Haus alle RWMs angehen. D aweis man nicht, wo die Ursahce zu suchen ist! Diesen TreppenhausRWM will ich per Funkempfänger auf den Bus geben und der reiche nach die nächsten (drei) Stockwerksrepeater im Treppenhaus per USB auf Testalarm stellen. Der ist dann (etwas leiser) zur Differenzierung und die Stockwerke gehen dann leicht zeitversetzt los. Alle anderen Aktionen Licht an Rollläden hoch, Treppenhausentlüftung laufen parallel.

Meine Lösung über USB liefert schön die Battereispannung, die beiden Temperaturwerte und den Rauchkammerverschmutzungsgrad mit den grün,gelb,rot-Schwellen wie von GIRA vorgegeben.

Fazit: bzgl. Geschwindigkeit und Funktionsumfang ist KNX und Funkdiagnosetool per USB nicht vergleichbar. Beides hat seine Vorteile und Einsatzschwerpunkte. Eine schnelle, zeitnahe Verbindung realisiere ich dann noch über FunkEMPFÄNGERmodule (stockwerksweis).

Wegen den Skripte: ich bin morgen noch bei einem ersten Interessenten am (Fern)Installieren und rechne noch mit einigen Verbesserungen. Skript/Erfahrungsaustausch gerne per perönslicher Email.

Jürgen, ich hoffe es ist was für Dich dabei …

Vielen Dank für deine ausführliche Antwort!
Das hat mir sehr geholfen.

Das würde mich brennend interessieren.

Verstehe ich es richtig:
Du verwendest noch ein weiteres Funkmodul, welches du dann extern per Spannung versorgst und an den PINs abgreifst, wann ein Alarm von einem anderen Melder eingeht?
Oder was meinst du mit Stockwerksrepeater bzw. GIRA Funkempfänger?

Ich denke das wäre die Lösung für mein Problem. :cool:

Hallo Jürgen,

wenn ich es von meinem Freundlichen (Elektriker) noch richtig im Ohr habe, dann verwendet er Gira 041300 Funk Schaltaktor Mini und lenkt dessen SchaltAUSGANG auf eine I/O-Modul-Eingang und hat es so auf dem Bus. Da das Teil auf bis zu 14 Funker gelernt werden kann, könnte ich auch alle vier Stockwerke auf einen FunkEMPFÄNGER geben - hätte aber keine Differenzierung - die ich aber haben wollte: daher vermutlich vier Funkempfänger …

Ich schreibe mehr, so bis in 3-4 Wochen, wenn’s dann tut …

Grüsse
Walter

Hallo Walter,
das klingt interessant! Würde mich sehr interessieren.
Freue mich schon auf deinen Beitrag. :slight_smile:

Hallo Walter,
hast du schon neue Erkenntnisse?
Ich habe mir jetzt mal das Diagnosetool bestellt. :cool:

Hallo liebe IPSler,

hier die heutigen ersten Erfahrungen mit dem GIRA FunkempfängerTASTER 0565 00.

  • ausgepackt und an 230V angeschlossen
  • 4sec die Lerntaste am FunkTaster gedrückt
  • GIRA RWM-Funkmelder (den Stockwerks-Repeater im Treppenhaus) auf Testalarm gedrückt
  • warten, bis die Funkfrequenz des RWM im Funktaster gelernt ist
  • den Schließer noch an ein I/O-Modul auf einen Eingang gelegt. fertig!

Wenn nun der gelernte RWM im Treppenhaus angeht (Test oder Alarm) DANN bekomme ich mit ca. 2 sec Verzögerung ein Signal über den Eingang am I/O-Modul auf den Bus. Das Siganl liegt wegen dem FunkTASTER solange an, bis der (gelernete) RWM im Treppenhaus wieder ausgeht. Ein Nachlauf des Signals von 3-4 sec. ist m.E. nicht störend.

DAS GLEICHE funktioniert, wenn ein anderer RWM der selben Gruppe (bei mir stockwerkweise UG, EG, OG, DG) (Test)Alarm schlägt!

Jetzt muss ich das ganze mal vier erst noch ordentlich verkabeln und dann will ich folgendes realisieren:

Vorüberlegung:

  • es ist nicht sinnvoll, wenn EIN RWM im Haus Alarm schlägt, dass dann das ganze Haus mit 22 RWM los geht (Begründung: eine Ortung des richtigen Fluchtwegs (Treppenhaus, Balkon, Dach) ist genausowenig möglich, wie eine vielleicht sinnvolle Brandbekämpfung. Der (laute) RWM im Treppenhaus gibt die Richtung vor.
  • trotzdem will ich nicht darauf vertrauen, dass ein RWM im UG (Treppenhaus) die Bewohner im DG im Schlaf erreicht!

Vorerfahrungen:

  • eine TESTalarmierung der RWM in den Schlafräumen der anderen Stockwerke dauert pro RWM über die serielle Schnittstelle des Funkdiagnosemodul 1-2min! Selbst wenn man stockwerkweise im MASTERbedroom anfängt und die „Nähe“ zum Alarm bzgl. der Reihenfolge berücksichtig ist mir das zu langsam.
  • dieser Testalarm über seriell löst LEIDER keinen Gruppenalarm aus. Das hatte ich ursprünglich gehofft :mad:
  • trotzdem werde ich diesen Funktionsstrang realisieren

Endausbau:

  • bei einem Alarm werden in ALLEN (anderen) Stockwerken die Rollläden (als Fluchtwege) geöffnet und ich will die Beleuchtung überall ANschalten.
  • die Beleuchtung will ich in einem Intervall von (aktuell geplant) 9 sec AN und 1 sec AUF als Alarmsignalisierung verwenden. So sollte, bis der Alarm gehört, oder der Testalarm in den anderen Stockwerken angeht, bereits eine Aufmerksamkeit der Bewohner erreicht sind. Die Lautstärke signalisiert immer noch das „Auslösestockwerk“
  • Signalsierung über SMS, EMail & Co. laufen parallel

Ich werde von einem Endausbau wieder berichten.

Fragen, Anmerkungen und Verbesserungen gerne (auch in der Zwischenzeit) willkommen!

Status tägliche Abfrage: läuft reibungslos. Ca. einmal im Monat bekomme ich eine SMS, dass auch am zweiten Tag kein Abruf des am längsten nicht abgerufenen RWMs möglich war. Ich musste aber bisher nie eingreifen, da es dann beim dritten Anlauf bisher immer funktioniert hat. Eintägiges Nichterreichen ist im LogFile ca. zweimal im Monat protokolliert.

Viele Grüße
nicebits

Ich hole das hier mal wieder hoch :wink:

Aktuell gibt es bei Gira die Rauchmelder mit dem Zusatz Q (neue Generation). Zum Funk Diagnosetool 233300 habe ich jetzt mehrfach gelesen, dass die Q Melder nicht unterstützt werden. Ist das tatsächlich so oder ne Fehlinfo oder gibt es da eine Art Firmwareupdate für das Modul?

Auf der Gira Homepage finde ich zwar folgendes:

Gira Funk-Diagnosetool für den Rauchwarnmelder Dual Q

aber keinerlei Artikelnummer. Ist das jetzt der Artikel 233300 oder ein anderer? Hat da jemand schon Erfahrungen?

Gruß
Jens

Ok, also dann beantworte ich mir das mal selber :wink:

Laut Aussage vom Gira Support ist es tatsächlich so, das die „Q Label“ Rauchmelder mit dem Diagnosetool (233300) aktuell nicht ausgelesen werden können.
Es wird damit gerechnet das es Ende Januar eine Lösung geben wird, wie diese aussehen wird ist aber noch nicht klar!?

Gruß
Jens

Hallo Jens,
auch wenn dein Post schon 1 Jahr zurückliegt hast du zwischenzeitig neue Infos?
Ich finde mitlerweile auf der Gira Seite nur noch die Infos zu den Dual Q Rauchmeldern (233602) und dem Funkmodul (234700). Hast du diese Kombination in Betrieb mit dem obigen Skript.

Grüße
Markus

Hallo Markus,

auf Grund der Tatsache das GIRA keine zuverlässige Auskunft geben konnte, habe ich das Projekt ruhen lassen und erst für meinen Jahresendurlaub wieder auf dem Zettel.
Daher: Nein, leider noch keine neuen Erkenntnisse

Da es allerdings kein neues Funkmodul gibt könnte man vermuten, das es mittlerweile die Melder auslesen kann. Einen Hinweis das dieses nicht möglich ist, finde ich auch nicht mehr. Also entweder testen oder GIRA anschreiben und bitte Rückmeldung geben :wink:

edit
Hatte gerade Zeit und habe mit GIRA telefoniert.
Laut Aussage vom Support lassen sich die Dual Q mit dem Diagnosetool auslesen, Vorraussetzung ist aber der Index 02 oder höher vom Funkmodul. (Im Vertrieb seit 08.4.2016)
Index 00 oder 01 funzt nicht.

Gruß
Jens

Hallo Jens,
danke für die Antwort.
Ich habe eben mit einem Händler telefoniert, der mir sagte, daß mitlerweile eigentlich nur noch die I02 im Umlauf sein sollte.

Allerdings habe ich noch fogendes in Erfahrung gebracht:

  • Die neuen Rauchmelde Q Dual sind mit einer fest verbauten Li-Batterie ausgestattet in der Bedienunganleitung wird ausdrücklich darauf hingewiesen, daß eine kurzes Abfrageintervall zu einer starken Verkürzung der Batterie Lebensdauer führen kann. Die Rauchmelder zur Abfrage der Raumtemperatur zu nutzen ist also keine gute Idee.

  • Jeder Rauchmelder muß scheinbar mit einem Funkmodul ausgestattet sein. Eine gemischte Vernetzung über Funk und Kabel ist nicht möglich. Daß ist entscheidend, da ich vorhatte über ein Relais Modul eine Verbindung zu IP-Symkon herzustellen um dann z.B. Licht und Rollos im Alarmfall zu steuern. Funk- und Relais Modul in einem Melder geht aber nicht. Eine Alternative wäre ggf. das Einbinden eines Gira Funkaktors.

Grüße
Markus

Für die Kommunikation mit IPS ist doch das Diagnosetool gedacht !? :confused:

Hallo Jens,
auch wen das jetzt am eigentlichen Thema vorbeigeht .
Ich dachte das Diagnosetool ist nur zum Auslesen von Temperatur, Verschmutzungsgrad und Batteriezustand gedact.
Ich möchte bei einem Alarm jedoch zusätzlich im Haus das Licht einschalten und die Rollos hochfahren und eine Mail verschicken. Dazu wollte ich den Relaisausgang in einem vernetzten RWM mit einem Binäreingang auswerten.
Grüße

Markus

Hmmmm, da hast Du Recht.
Irgendwie bin ich davon ausgegangen das die Komm. über das Diagnosetool geht.:confused:
Dann vernetze doch alle Rauchmelder bis auf einen per Funk und den letzten bindest du per Kabel an und stattest den mit dem Relaismodul aus oder nutzt wie Post #9 beschrieben einen Gira 041300 Funk Schaltaktor Mini. Die Vernetzungsklemmen sind trotz Funkmodul nutzbar.

Guß
Jens