FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: vw2audi am 18 Februar 2019, 00:42:35

Titel: Einen Dummy in meine Funktion integrieren!
Beitrag von: vw2audi am 18 Februar 2019, 00:42:35
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');;}
}
Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: CoolTux am 18 Februar 2019, 06:17:58

if ( Value('Dunkelheit') eq 'on' )


Einfach mit einbauen.
Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: vw2audi am 18 Februar 2019, 23:13:01
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?

Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: vw2audi am 18 Februar 2019, 23:25:52
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.
Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: CoolTux am 19 Februar 2019, 03:27:10
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.
Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: vw2audi am 19 Februar 2019, 11:27:17
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



Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: CoolTux am 19 Februar 2019, 12:15:24
Und das MQTT_DEVICE meldet Dir Werte von mehreren Sensoren ooder bildet dieses Device wirklich nur einen Sensor ab?
Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: vw2audi am 21 Februar 2019, 00:34:21
richtig, es werden durch dieses Modul mehrere Devices empfangen.
Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: CoolTux am 21 Februar 2019, 06:45:59
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?
Titel: Antw:Einen Dummy in meine Funktion integrieren!
Beitrag von: Beta-User am 21 Februar 2019, 08:45:30
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...