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