Wir haben hier noch 8 x RM100-3 liegen welche ich ja untereinander vernetzten könnte. Zielsetzung ist aber, dass ich genau sagen soll welcher Melder ausgelöst hat. Ist Doof wenn die Nachtschicht mal wieder alle Räume absuchen muss um herauszufinden welcher Funkmelder mal wieder einen Fehlalarm ausgelöst hat.
An den Rauchmelder liegen permanent 4,5V an und bei Alarm wird wird dieser Wert für jeweils für 2 Sekunden unterbrochen.
Das FS20s8m sendet ja von 0-24v input. Kann ich also so vergessen (gäb ja nur Alarm)
Jetzt kam mir grad die Idee die Rauchmelder an einem 8 Kanal Relais"http://www.amazon.de/Kanal-Relay-Relais-Module-Arduino/dp/B00AEIDWXK (http://www.amazon.de/Kanal-Relay-Relais-Module-Arduino/dp/B00AEIDWXK)" anzuschliessen um im Alarmfall mit einem FS20s8m ans FHEM zu senden. Relais sind ja ACTIVE-LOW
Ich habe schon 4er Module die ihre Arbeit gut verrrichten an den Gpios des Raspy.
In diesem Fall ist halt kein Raspberry in der nähe und ich würde a das Relais mit einem 5V Netzteil bestücken und vor den einzelnen Eingängen die kommenden 4,5V der Rauchmelder mit einem Widerstand auf 3,3V runterschrauben und die Ausgänge auf den fs20s8m legen.
Hat schon mal jemand was ähnliches gemacht oder habt ihr evt. einen bessen Vorschlag ?
ZitatRelais 8 Relaistyp Wechselschalter Steuerstrom 15-20mA Versorgungsspannung (VCC): 5 V Stromaufnahme Spule ca. 70 mA Spulenwiderstand ca. 70 Ohm Stromaufnahme Steuereingang ca. 4 mA Schaltleistung Gleichspannung 30 V DC / 10 A Schaltleistung Wechselspannung 250 V AC
Gruss Andreas
Moin,
Du empfängst doch die Signale von den Rauchmeldern bereits über den CUL.
Jeder RM hat seine eigene Adresse (Welche sich leider bei jedem Batteriewechsel ändert).
Ich lasse bei mir z.B. bei Alarm die DECT-Telefone (über Fritzbox) mit entsprechendem Text (welcher Rauchmelder) signalisieren.
Alternative:
room Alarm und dort die Rauchmelder etc. übersichtlich zusammenfassen.
Setzt natürlich jeweils voraus, dass die Rauchmelder Aussagekräftige Namen erhalten haben.
Gruss
Andreas
Schon klar, aber der RM100-3 ist Drahtgebuden, kein Funk.
Bei unseren RM100-2 habe ich es ähnlich gemacht wie du geschrieben hast. Diese sind in den zugänglichen Büros verteilt.
Die Drahtgebundenen sollen aber in die Lager, Werkstätten etc.
Gruss Andreas
Ich habs jetzt anders gelöst.
Vielleicht kanns ja mal einer gebrauchen.
Alarmsignal von der LED des Rauchmelders über Spannungsteiler (Widerstände R1=10K, R2=5K) in den Analogeingang des Arduino.
Wenn sich der Wert grösser 0 ist, wird per FS20S8M ein Signal weitergegeben und eine LED leuchtet auf.
Das ganze läuft im Bilderrahmen mit Flucht/Gebäudeplan. Pro Raum eine LED. Auf diese Weise verbinden wir grade mehr als 20 Rauch und 5 GAs/Co2 Melder.
Codeanpassungen müssen in Zeile 21,24,29,36. Beispiel ist für 8 Meldeeinheiten
/*
V.1.0 / 2915119
Rauchmeldezentrale für max. 16 Rauchwarner am Arduino Mega 2560
Sobald der Widerstand sich an einem Eingang ändert wird ein Schaltbefehl
an ein FS20S8M gegeben und die dazueghörige LED leuchtet.
Externer Reset, Betriebsleuchte und LCD für Meldungen ink.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
/*set the LCD address from I2C LCD DISPLAY VERSION 3 to 0x27 for a 20 chars 2/4 line display
Mega2560 used Pin
SDA Pin 20
SCL Pin 21
Set the pins on the I2C chip used for LCD connections:
addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
*/
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);
const int LCDBacklightPin = 3;
// Anzahl der Meldeeinheiten, Räume etc.
const int sumMelde = 8;
// Rauchmelder Anschlüsse auf A0-A7
int sensorPin[sumMelde] = {0,1,2,3,4,5,6,7};
// Rauchmelder Werte
int sensorValue[sumMelde];
// Raumzuordnung
const String room[sumMelde] = {"Raum 1","Raum 2","Raum 3","Raum 4","Raum 5","Raum 6","Raum 7","Raum 8"};
// Niedrigster und höchster Pin für Ausgänge, gege. anpassen
const int lowestOutPin = 22;
const int highesOutPin = 47;
// Betriebsanzeige LED
int ledbetr = 22;
// Warn LED
int led[8] = {30,31,32,33,34,35,36,37};
// FS20S8M für Rauchmelder
int s8M[8] = {40,41,42,43,44,45,46,47};
void setup() {
// LCD initialisieren
lcd.begin (16,2); // for 16 x 2 LCD module
lcd.setBacklightPin(LCDBacklightPin,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();
analogReference(DEFAULT);
// benötigte Pins auf OUTPUT setzen
for (int x = lowestOutPin; x <= highesOutPin; x++) {
pinMode(x, OUTPUT);
}
// Vorbelegungnen
digitalWrite(ledbetr, HIGH);
for (int x = 0; x < sumMelde; x++) {
digitalWrite(s8M[x], HIGH);
}
}
void ReadData(){
// analoge Eingänge überprüfen
for (int x = 0; x < sumMelde; x++) {
// 2 mal lesen mit pausen damit ein stabiler wert entsteht
sensorValue[x] = analogRead(sensorPin[x]);
delay(10);
sensorValue[x] = analogRead(sensorPin[x]);
delay(10);
}
}
void WriteData(){
for (int x = 0; x < sumMelde; x++) {
if (sensorValue[x] > 0.0){
lcd.clear ();
lcd.setCursor ( 0, 0 );
lcd.print ("Rauchalarm");
lcd.setCursor ( 0, 1 );
lcd.print (room[x]);
digitalWrite(s8M[x], LOW);
digitalWrite(led[x], HIGH);
delay(1000);
// Pin zurücksetzen sonst dauersenden des FS20S8M
digitalWrite(s8M[x], HIGH);
// Entscheidung was im Alarmfall passiert, gege. anpassen
delay(10000);
}
else {
lcd.setCursor ( 0, 0 );
lcd.print ("Keine Meldungen");
digitalWrite(led[x], LOW);
}
}
}
void loop() {
ReadData();
WriteData();
delay(150);
}
Gruss Andreas