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, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, 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, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, 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, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, 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, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, 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, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, 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, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, 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, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

doman75

Gibt es hier schon Neuigkeiten? Ist evtl die Reihenfolge der Befehle wichtig, also erst zeiteinheit,Dauer,akustiksignal und dann optiksignal?

Grüsse
Swen

kjmEjfu

Migriere derzeit zu Home Assistant

doman75

Hi,

ich habe das jetzt in 3 verschiedenen DOIF Varianten probiert, keine geht, wo ist mein Denkfehler?

Variante1:

([IT_V3_f6b8001] eq "An")(set HM_AlarmSirene datapoint 3.DURATION_VALUE 1)
(set HM_AlarmSirene datapoint 3.DURATION_UNIT M)
(set HM_AlarmSirene datapoint 3.OPTICAL_ALARM_SELECTION FLASHING_BOTH_REPEATING)
(set HM_AlarmSirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNA



([IT_V3_f6b8001] eq "An")
(set HM_AlarmSirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL)
(set HM_AlarmSirene datapoint 3.OPTICAL_ALARM_SELECTION FLASHING_BOTH_REPEATING)
(set HM_AlarmSirene datapoint 3.DURATION_UNIT M)
(set HM_AlarmSirene datapoint 3.DURATION_VALUE 1)



([IT_V3_f6b8001] eq "An")
(set HM_AlarmSirene datapoint 3.DURATION_UNIT M)
(set HM_AlarmSirene datapoint 3.DURATION_VALUE 1)
(set HM_AlarmSirene datapoint 3.ACOUSTIC_ALARM_SELECTION DISABLE_ACOUSTIC_SIGNAL)
(set HM_AlarmSirene datapoint 3.OPTICAL_ALARM_SELECTION FLASHING_BOTH_REPEATING)


Grüße
Swen

zap

Hatte ich doch schon weiter oben geschrieben: Die Datenpunkte sind nummerisch, d.h. Du musst Zahlen statt der Strings übergeben. Welche Zahl für welchen String steht, lässt sich nur vermuten. Normalerweise nummeriert EQ3 die von 0 beginnend durch. Schau Dir also die Doku und und zähle ab 0.
Oder Du suchst oder fragst mal im Homematic Forum (damit meine ich das richtige, nicht das Unterforum hier).

2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

weldel60

Hallo doman75,

in openHAB hat die ASIR einer zum Laufen gebracht. Siehe Anhang. Hier wurden die ausgeschriebenen Ausdrücke verwendet.

Innerhalb eines Programmes der CCU2 läuft die Sirene wie im Anhang 2 zu sehen.

Über fhem stehe ich momentan auch an. Sorry.

doman75

@zap ich denke nicht das da nummerische Werte erwartet werden, da in der Doku und auch in dem Openhab Beispiel immer Strings verwendet werden. Der Typ ist ja auch extra Enum und nicht wie an anderen Stellen Integer, Float Boolean oder was auch immer. Stört es das HMCCU Modul das da ein String kommt oder wird das einfach weggeschickt?

Ich bin schon in anderen foren wie openhab oder homematic deswegen unterwegs

Grüße
Swen

doman75

#21
@weldel ich habe in der ccu2 beim programm mehrere unterschiedliche Reihenfolgen probiert, der Alarm wurde immer ausgelöst. Es mussten nur alle 4 Parameter nacheinander gesetzt werden, nimmt man nur 2 geht es nicht.

Grüße
Swen

doman75

Also zap hatte wohl doch recht  ;)


([IT_V3_f6b8001] eq "An")
(set HM_AlarmSirene datapoint 3.DURATION_UNIT 1,
set HM_AlarmSirene datapoint 3.DURATION_VALUE 1,
set HM_AlarmSirene datapoint 3.ACOUSTIC_ALARM_SELECTION 0,
set HM_AlarmSirene datapoint 3.OPTICAL_ALARM_SELECTION 1)


mit diesen Code hat jetzt die Alarmsirene etwas gemacht, was genau kann ich nicht sagen, da ich weder in Sichtweite noch in Hörweite bin. Das muss ich dann vor ort mal testen.

weldel60

Korrekt.

Die aus Post #13 angegebenen Datenpunkte werden jeweils mit 0 beginnend nummeriert.

also z.B. Duration_Unit:
S = 0
M = 1
usw.

Super Teamwork.

zap

Ich nehme an, dass die Openhab Entwickler intern die Strings auf Zahlen mappen
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

kjmEjfu

hier kann man übrigens die Werte auch nochmal direkt nachschlagen (ohne selber zählen zu müssen): https://www.symcon.de/forum/threads/35652-HomeMatic-IP-Alarmsirene-schalten-HmIP-ASIR?s=&p=342934#post342934
Migriere derzeit zu Home Assistant

Phreak87

Also ich konnte die Sirene mit folgendem code im define starten:

([SireneTest] eq "on")     
(set Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION 0,
set Sirene datapoint 3.OPTICAL_ALARM_SELECTION 1,
set Sirene datapoint 3.DURATION_UNIT 0,
set Sirene datapoint 3.DURATION_VALUE 3 )


zap

Zitat von: Phreak87 am 22 Mai 2020, 00:03:51
Also ich konnte die Sirene mit folgendem code im define starten:

([SireneTest] eq "on")     
(set Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION 0,
set Sirene datapoint 3.OPTICAL_ALARM_SELECTION 1,
set Sirene datapoint 3.DURATION_UNIT 0,
set Sirene datapoint 3.DURATION_VALUE 3 )

Mittlerweile sollte auch das funktionieren:

set Sirene datapoint 3.ACOUSTIC_ALARM_SELECTION 0 3.OPTICAL_ALARM_SELECTION 1 3.DURATION_UNIT 0 3.DURATION_VALUE 3
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB