HmIP-ASIR in Fhem nutzen

Begonnen von weldel60, 05 Januar 2018, 10:46:27

Vorheriges Thema - Nächstes Thema

weldel60

Hallo,

habe die HmIP-ASIR Innensirene mit der CCU2 verbunden. Über Programme funktioniert diese auch mit der CCU2.
Als Device ist sie nun auch mit Fhem verbunden.

Wie kann ich die Sirene nun von Fhem aus aktivieren?

Hier die Deviceinfo:

CHN 000AD569A34E88:0 HM-Sirene:0
  DPT {b} HmIP-RF.000AD569A34E88:0.CONFIG_PENDING = false [RE]
  DPT {b} HmIP-RF.000AD569A34E88:0.DUTY_CYCLE = false [RE]
  DPT {n} HmIP-RF.000AD569A34E88:0.ERROR_CODE = 0 [RE]
  DPT {b} HmIP-RF.000AD569A34E88:0.LOW_BAT = false [RE]
  DPT {f} HmIP-RF.000AD569A34E88:0.OPERATING_VOLTAGE = 4.600000 [RE]
  DPT {n} HmIP-RF.000AD569A34E88:0.RSSI_DEVICE = 194 [RE]
  DPT {n} HmIP-RF.000AD569A34E88:0.RSSI_PEER = 198 [RE]
  DPT {b} HmIP-RF.000AD569A34E88:0.SABOTAGE = false [RE]
  DPT {b} HmIP-RF.000AD569A34E88:0.UNREACH = false [RE]
  DPT {b} HmIP-RF.000AD569A34E88:0.UPDATE_PENDING = false [RE]
CHN 000AD569A34E88:1 HmIP-ASIR 000AD569A34E88:1
  DPT {b} HmIP-RF.000AD569A34E88:1.PRESS_LONG =  [E]
  DPT {b} HmIP-RF.000AD569A34E88:1.PRESS_SHORT =  [E]
CHN 000AD569A34E88:2 HmIP-ASIR 000AD569A34E88:2
  DPT {i} HmIP-RF.000AD569A34E88:2.PROCESS = 0 [RE]
  DPT {i} HmIP-RF.000AD569A34E88:2.SECTION = 0 [RE]
  DPT {b} HmIP-RF.000AD569A34E88:2.STATE = false [RE]
CHN 000AD569A34E88:3 HmIP-ASIR 000AD569A34E88:3
  DPT {i} HmIP-RF.000AD569A34E88:3.ACOUSTIC_ALARM_SELECTION =  [W]
  DPT {i} HmIP-RF.000AD569A34E88:3.DURATION_UNIT =  [W]
  DPT {i} HmIP-RF.000AD569A34E88:3.DURATION_VALUE =  [W]
  DPT {i} HmIP-RF.000AD569A34E88:3.OPTICAL_ALARM_SELECTION =  [W]
  DPT {i} HmIP-RF.000AD569A34E88:3.PROCESS = 0 [RE]
  DPT {i} HmIP-RF.000AD569A34E88:3.SECTION = 0 [RE]
  DPT {b} HmIP-RF.000AD569A34E88:3.STATE = false [RE]

Im Programm der CCU2 müssen immer die ersten 4 Werte für den Kanal 3 angegeben werden.

Wie kann ich einen Device anlegen, der diese 4 Werte überträgt?

Kann hier jemand helfen?

zap

#1
Du definierst ein Device mit HCCUDEV, z.B.

define meineSirene HMCCUDEV NameOderAdresse

Dann:

set meineSirene datapoint 3.ACOUSTIC_ALARM_SELECTION Wert
set meineSirene datapoint ...

Wenn Du noch irgendwelche Readings benötigst, dann ccureadingfilter entsprechend setzen.



2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

weldel60

Zitat von: zap am 05 Januar 2018, 15:59:31
1. Du definierst ein Device mit HCCUDEV, z.B.

2. define meineSirene HMCCUDEV NameOderAdresse

3. Dann:

set meineSirene datapoint 3.ACOUSTIC_ALARM_SELECTION Wert
set meineSirene datapoint ...

Wenn Du noch irgendwelche Readings benötigst, dann ccureadingfilter entsprechend setzen.

1. und 2. hatte ich schon.
Gebe ich 3. die set.....-Befehle nacheinander händisch ein, klappt es schon mal - Danke.

Wie verpacke ich nun die 4 notwendigen Set-befehle?
Ein Dummy und notify?

Irgendwie stehe ich auf dem Schlauch.

zap

Da führen vermutliche mehrere Wege zum Ziel:

1. dummy und notify
2. readingproxy (du sparst das notify)
....



2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

weldel60

Ich habe:

Dummy:
define SireneTest dummy
attr SireneTest setList on off

und notify:
define Test2notify notify SireneTest {if ("$EVENT" eq "on") {fhem("set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL");; fhem("set HM_HM_Sirene datapoint 3.OPTICAL_ALARM_SELECTION ALTERNATELY_REPEATING");; fhem("set HM_HM_Sirene datapoint 3.DURATION_UNIT S");; fhem("set HM_HM_Sirene datapoint 3.DURATION_VALUE 10")}elseif {fhem("set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL")}}

rennt aber nicht.

zap

Was passiert wenn du den Teil {fhem(...} in der Kommandozeile eingibst?

Ansonsten versuche mal ein fhem() mit mehreren Set Befehlen getrennt durch Semikolon.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

weldel60

Bei:
{fhem("set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL");; fhem("set HM_HM_Sirene datapoint 3.OPTICAL_ALARM_SELECTION ALTERNATELY_REPEATING");; fhem("set HM_HM_Sirene datapoint 3.DURATION_UNIT S");; fhem("set HM_HM_Sirene datapoint 3.DURATION_VALUE 10")}elseif {fhem("set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL")}

bekomme ich:

Can't call method "elseif" on an undefined value at (eval 15691) line 1.

weldel60

Ohne elseif:

{fhem(set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL; set HM_HM_Sirene datapoint 3.OPTICAL_ALARM_SELECTION ALTERNATELY_REPEATING; set HM_HM_Sirene datapoint 3.DURATION_UNIT S; set HM_HM_Sirene datapoint 3.DURATION_VALUE 10)}

Unknown command {fhem(set, try help.

zap

in perl "elsif" statt "elseif"
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

weldel60

Aus der Kommandozeile:
{fhem("set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL");; fhem("set HM_HM_Sirene datapoint 3.OPTICAL_ALARM_SELECTION ALTERNATELY_REPEATING");; fhem("set HM_HM_Sirene datapoint 3.DURATION_UNIT S");; fhem("set HM_HM_Sirene datapoint 3.DURATION_VALUE 10")} elsif {fhem("set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL")}

kommt:
syntax error at (eval 21496) line 1, near "} elsif"

zap

Und was soll jetzt das elsif darin bewirken? Und wo ist das if dazu? Und wo ist die Bedingung für elsif? Du musst schon syntaktisch korrekten Perl Code angeben.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

weldel60

Habe nach deinem Tipp ohne notify versucht:

define Test4 DOIF ([SireneTest] eq "on") (set HM_HM_Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION "DISABLE_ACOUSTIC_SIGNAL"; set HM_HM_Sirene datapoint 3.OPTICAL_ALARM_SELECTION "ALTERNATELY_REPEATING"; set HM_HM_Sirene datapoint 3.DURATION_UNIT "S"; set HM_HM_Sirene datapoint 3.DURATION_VALUE 10)

SireneTest wird abgefragt - zu cmd1 gewechselt.

Keine Fehlermeldung im Logfile.

Die Sirene, bzw. Lichtsignal bekomme ich nicht aktiviert. Von der CCU2 aus funktioniert es nach wie vor.?????

zap

Es würde mich doch sehr wundern, wenn die Datenpunkte Texte akzeptieren würden. Das sind Integer Werte. Du musst also zB DISABLE_... durch die entsprechende Zahl ersetzen
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

weldel60

Hier der Auszug der entsprechenden Indizes.

Alarmsirene - ACOUSTIC_ALARM_SELECTION
======================================
DISABLE_ACOUSTIC_SIGNAL
FREQUENCY_RISING
FREQUENCY_FALLING
FREQUENCY_RISING_AND_FALLING
FREQUENCY_ALTERNATING_LOW_HIGH
FREQUENCY_ALTERNATING_LOW_MID_HIGH
FREQUENCY_HIGHON_OFF
FREQUENCY_HIGHON_LONGOFF
FREQUENCY_LOWON_OFF_HIGHON_ OFF
FREQUENCY_LOWON_LONGOFF_HIGHON_LONGOFF
LOW_BATTERY
DISARMED
INTERNALLY_ARMED
EXTERNALLY_ARMED
DELAYED_INTERNALLY_ARMED
DELAYED_EXTERNALLY_ARMED EVENT
ERROR

Alarmsirene - OPTICAL_ALARM_SELECTION
=====================================
DISABLE_OPTICAL_SIGNAL
BLINKING_ALTERNATELY_REPEATING
BLINKING_BOTH_REPEATING
DOUBLE_FLASHING_REPEATING
FLASHING_BOTH_REPEATING
CONFIRMATION_SIGNAL_0
CONFIRMATION_SIGNAL_1
CONFIRMATION_SIGNAL_2

Alarmsirene - DURATION_UNIT
===========================
S
M
H
D

zap

Ich denke, dass die bei 0 anfangen zu zählen.  Also einfach durchnummerieren oder mal im Homematic Forum fragen, ob jemand die numerischen Werte kennt
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)