Hallo Gemeinde,
ich möchte gerne in meine Funktion einen Dummy integrieren, dieser wird durch einen Helligkeitswert auf on bzw. off getriggert.
Also, wenn es dunkel ist is der
dummy "Dunkelheit" auf "on"
bei Helligkeit ider der
dummy "Dunkelheit" auf "off"
Disen Dummy versuche ich jetzt in meine Routine für die Bewegungsmelder mit einzubauen, da diese nur bei Dunkelheit funktionieren sollen:
Hardware: Sonoff RFBridge und PIR2 Bewegungsmelder.
PIR_Melder:RfRaw_Data.* {
my $data = (
'281818190819090909081818',
);
if ($EVTPART7 =~ m/$data/i) {fhem('set Aussenstrahler on; set StrahlerParkplatz on');;}
}
if ( Value('Dunkelheit') eq 'on' )
Einfach mit einbauen.
Herzlichen Dank für die Hilfe, es hat funktioniert. Hatte es erst an der falschen Stelle eingebaut.
Der Vollständigkeit halber:
define PIR_Melder_3_Raw notify PIR_Melder:RfRaw_Data.* {\
my $data = (\
'281818190819090909081818',\
);;\
if ($EVTPART7 =~ m/$data/i && Value('Dunkelheit') eq 'on' ) {fhem('set Aussenstrahler on;; set StrahlerParkplatz on;; set PIR_Melder_03 on-for-timer 30');;;;}\
}
Da ich mehrere Bewegungsmelder habe wäre es klasse, wenn ich bei my $data die Übertragungscodes der anderen gleich mit erschlagen könnte, hat dazu noch jemand eine Idee?
Das Reading für den 2. Bewegungsmelder in der RF Bridge sieht, wie folgt aus:
{"RfRaw":{"Data":"AA B1 03 04D8 0186 3048 28181819081909090909081908181819081908181818181909 55"}}
Also würde ich versuchen, das er auch auf den Data Wert
'28181819081909090909081908181',\
reagiert.
aber einfach mit in die my data schreiben funktioniert leider nicht.
Verwende mal bitte Codetags, so sieht man das alles schlecht.
Einfach oben im Forum Editor auf die Route drücken und da Einen Code dann einschließen.
Und ich würde versuchen da einen vernünftigen Wert als Reading zu bauen. Dieser Zahlencode ist ja mega Unsinn.
Gib mal bitte ein List des Devices.
Oben in FHEMWEB in der Kommandozeile list DEVICENAME eingeben.
Hallo CoolTux,
danke für deinen Hinweis, hier einmal das List für mein PIR_Melder device, es ist die RFBridge von Sonoff, an der alle PIR Melder angemeldet sind.
Internals:
FUUID 5c56293d-f33f-4a07-8528-7371d782045fd815
IODev Mosquitto
NAME PIR_Melder
NR 753
STATE incoming publish received
TYPE MQTT_DEVICE
READINGS:
2019-02-19 11:25:16 RfRaw_Data AA B1 03 04E2 017C 3052 28181819081909090909081908181819081908181818181909 55
2019-02-18 23:56:25 RfReceived_Data 15216318
2019-02-18 23:56:25 RfReceived_High 1180
2019-02-18 23:56:25 RfReceived_Low 390
2019-02-18 23:56:25 RfReceived_RfKey None
2019-02-18 23:56:25 RfReceived_Sync 12420
2019-02-19 11:25:16 Sensor {"RfRaw":{"Data":"AA B1 03 04E2 017C 3052 28181819081909090909081908181819081908181818181909 55"}}
2019-02-19 11:25:16 transmission-state incoming publish received
message_ids:
sets:
subscribe:
tele/RFBridge/RESULT
subscribeExpr:
^tele\/RFBridge\/RESULT$
subscribeQos:
tele/RFBridge/RESULT 0
subscribeReadings:
tele/RFBridge/RESULT:
cmd
name Sensor
Attributes:
IODev Mosquitto
alias Sonoff RF Bridge
group RF Bridge
room MQTT
stateFormat transmission-state
subscribeReading_Sensor tele/RFBridge/RESULT
Und das MQTT_DEVICE meldet Dir Werte von mehreren Sensoren ooder bildet dieses Device wirklich nur einen Sensor ab?
richtig, es werden durch dieses Modul mehrere Devices empfangen.
Dann empfehle ich erstmal zu schauen ob das Modul die Möglichkeit bietet diese mehrere Geräte von Haus aus als Readings zu setzen. Kann mir nicht vorstellen daß das so gedacht ist wie es jetzt läuft.
Am besten dafür ein extra Thread im Forum vom Modul auf machen.
Bis dahin kannst Du mit userReadings arbeiten.
Anscheinend ist der sehr String der entscheidende, richtig?
28181819081909090909081908181819081908181818181909
Ist der bei allen Bewegungsmeldern unterschiedlich und eindeutig?
Dieses etwas "unverdauliche" Verhalten zeigen leider auch einige ähnliche Projekte (gibt's mit RFID, WLAN/MAC, IR...).
Es gibt da zwei Möglichkeiten:
- Entweder die firmware so modifizieren, dass der zu einem physischen Gerät gehörende Teil als letzter Teil des Topic-Strings verwendet wird (hatte ich für RFID mal vorgeschlagen, da wäre es vergleichsweise einfach gewesen), oder
- Eine eigene Auswertelogik (Perl) bauen, die dann aufgerufen wird (das müßte auch mit den alten MQTT -Modulen gehen, helfen könnte ich nur bei MQTT2_DEVICE, was insbesondere auch json2nameValue() nutzen kann). Die muß dann die Identifizierung des "eigentlichen" Geräts leisten können, um dann den eigentlichen Inhalt als richtig benamstes Reading ablegen zu können...
Aufwändig...