Rauchmelder Problem

Begonnen von Blebbens, 06 Juni 2014, 21:41:12

Vorheriges Thema - Nächstes Thema

Blebbens

Hi zusammmen,

Derzeit montiere ich meine 4 HM-Rauchmelder und habe diese vor dem Pairing mit dem USB-CFG und fhem zuvor untereinander gepaired.

Nun sind diese Melder mit fhem verbunden und gepeert untereinander nach der Anleitung im Wiki. Ausserdem habe ich einen Push eingerichtet, der bei Alarm auf das iPhone pushen soll per App Pushover.

Mein Problem ist nun, dass ich keinen TeamCall oder Alarm per fhem auslösen kann zwecks Test der Funktion und des Pushes...

"Unknown argument teamcall, choose one of peerChan postevent press"

Kann mal jemand einen Blick auf den Ausschnitt meiner fhem.cfg werfen, wo der Fehler liegen kann?


define EG_WZ_RM1 CUL_HM 23418D
attr EG_WZ_RM1 IODev hmusb
attr EG_WZ_RM1 actCycle 099:00
attr EG_WZ_RM1 actStatus alive
attr EG_WZ_RM1 autoReadReg 4_reqStatus
attr EG_WZ_RM1 devStateIcon off:general_ok *:secur_alarm
attr EG_WZ_RM1 event-on-change-reading .*
attr EG_WZ_RM1 expert 2_full
attr EG_WZ_RM1 firmware 1.0
attr EG_WZ_RM1 icon secur_smoke_detector
attr EG_WZ_RM1 model HM-SEC-SD
attr EG_WZ_RM1 msgRepeat 1
attr EG_WZ_RM1 peerIDs 00000000,2339DB01,
attr EG_WZ_RM1 room CUL_HM,Wohnzimmer
attr EG_WZ_RM1 serialNr KEQxxx
attr EG_WZ_RM1 subType smokeDetector
attr EG_WZ_RM1 webCmd statusRequest
define FileLog_EG_WZ_RM1 FileLog ./log/EG_WZ_RM1-%Y.log EG_WZ_RM1
attr FileLog_EG_WZ_RM1 logtype text
attr FileLog_EG_WZ_RM1 room CUL_HM
define ActionDetector CUL_HM 000000
attr ActionDetector actCycle 600
attr ActionDetector event-on-change-reading .*
attr ActionDetector model ActionDetector
define UG_FLUR_RM2 CUL_HM 233B6C
attr UG_FLUR_RM2 IODev hmusb
attr UG_FLUR_RM2 actCycle 099:00
attr UG_FLUR_RM2 actStatus alive
attr UG_FLUR_RM2 autoReadReg 4_reqStatus
attr UG_FLUR_RM2 devStateIcon off:general_ok *:secur_alarm
attr UG_FLUR_RM2 event-on-change-reading .*
attr UG_FLUR_RM2 expert 2_full
attr UG_FLUR_RM2 firmware 1.0
attr UG_FLUR_RM2 icon secur_smoke_detector
attr UG_FLUR_RM2 model HM-SEC-SD
attr UG_FLUR_RM2 msgRepeat 1
attr UG_FLUR_RM2 peerIDs 00000000,2339DB01,
attr UG_FLUR_RM2 room CUL_HM
attr UG_FLUR_RM2 serialNr KEQxxx
attr UG_FLUR_RM2 subType smokeDetector
attr UG_FLUR_RM2 webCmd statusRequest
define FileLog_UG_FLUR_RM2 FileLog ./log/UG_FLUR_RM2-%Y.log UG_FLUR_RM2
attr FileLog_UG_FLUR_RM2 logtype text
attr FileLog_UG_FLUR_RM2 room CUL_HM
define OG_FLUR_RM3 CUL_HM 2339DB
attr OG_FLUR_RM3 IODev hmusb
attr OG_FLUR_RM3 actCycle 099:00
attr OG_FLUR_RM3 actStatus alive
attr OG_FLUR_RM3 autoReadReg 4_reqStatus
attr OG_FLUR_RM3 devStateIcon off:general_ok *:secur_alarm
attr OG_FLUR_RM3 event-on-change-reading .*
attr OG_FLUR_RM3 expert 2_full
attr OG_FLUR_RM3 firmware 1.0
attr OG_FLUR_RM3 icon secur_smoke_detector
attr OG_FLUR_RM3 model HM-SEC-SD
attr OG_FLUR_RM3 msgRepeat 1
attr OG_FLUR_RM3 peerIDs 00000000,2339DB01,
attr OG_FLUR_RM3 room CUL_HM
attr OG_FLUR_RM3 serialNr KEQxxx
attr OG_FLUR_RM3 subType smokeDetector
attr OG_FLUR_RM3 webCmd statusRequest
define FileLog_OG_FLUR_RM3 FileLog ./log/OG_FLUR_RM3-%Y.log OG_FLUR_RM3
attr FileLog_OG_FLUR_RM3 logtype text
attr FileLog_OG_FLUR_RM3 room CUL_HM
define DG_FLUR_RM4 CUL_HM 2339F6
attr DG_FLUR_RM4 IODev hmusb
attr DG_FLUR_RM4 actCycle 099:00
attr DG_FLUR_RM4 actStatus alive
attr DG_FLUR_RM4 autoReadReg 4_reqStatus
attr DG_FLUR_RM4 devStateIcon off:general_ok *:secur_alarm
attr DG_FLUR_RM4 event-on-change-reading .*
attr DG_FLUR_RM4 expert 2_full
attr DG_FLUR_RM4 firmware 1.0
attr DG_FLUR_RM4 icon secur_smoke_detector
attr DG_FLUR_RM4 model HM-SEC-SD
attr DG_FLUR_RM4 msgRepeat 1
attr DG_FLUR_RM4 peerIDs 00000000,2339DB01,
attr DG_FLUR_RM4 room CUL_HM
attr DG_FLUR_RM4 serialNr KEQxxx
attr DG_FLUR_RM4 subType smokeDetector
attr DG_FLUR_RM4 webCmd statusRequest
define FileLog_DG_FLUR_RM4 FileLog ./log/DG_FLUR_RM4-%Y.log DG_FLUR_RM4
attr FileLog_DG_FLUR_RM4 logtype text
attr FileLog_DG_FLUR_RM4 room CUL_HM

define Noti_Rauchmelder1PushOn notify EG_WZ_RM1:smoke-Alarm.* { system ("curl -s -F 'token=geheim' -F 'user=Geheim' -F 'message=Flur\nRauchmelder aktiv' https://api.pushover.net/1/messages.json")}
define Noti_Rauchmelder2PushOn notify UG_FLUR_RM2:smoke-Alarm.* { system ("curl -s -F 'token=Geheim' -F 'user=geheim' -F 'message=Flur\nRauchmelder aktiv' https://api.pushover.net/1/messages.json")}
define Noti_Rauchmelder3PushOn notify OG_FLUR_RM3:smoke-Alarm.* { system ("curl -s -F 'token=Geheim' -F 'user=Geheim' -F 'message=Flur\nRauchmelder aktiv' https://api.pushover.net/1/messages.json")}
define Noti_Rauchmelder4PushOn notify DG_FLUR_RM4:smoke-Alarm.* { system ("curl -s -F 'token=Geheim' -F 'user=Geheim' -F 'message=Flur\nRauchmelder aktiv' https://api.pushover.net/1/messages.json")}

define TeamDev CUL_HM 100010
attr TeamDev IODev hmusb
attr TeamDev autoReadReg 4_reqStatus
attr TeamDev expert 2_full
attr TeamDev model virtual_1
attr TeamDev subType virtual
attr TeamDev webCmd virtual
define Sdteam CUL_HM 10001001
attr Sdteam event-on-change-reading .*
attr Sdteam icon secur_smoke_detector
attr Sdteam model virtual_1
attr Sdteam peerIDs
attr Sdteam webCmd teamCall:alarmOn:alarmOff

define sdnf notify Sdteam:level:.199 set Sdteam alarmOff



Besten Dank...




Puschel74

Hallo,

kannst du die Codes bitte in die entsprechenden Tags packen?
Danke.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Blebbens

Leider kann ich keine Buttons anklicken ... Sehe nur Text... Oder wie lautet das Tag?

Puschel74

Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Blebbens

So, mit einem reinen Textbrowser auf Edge-Geschwindigkeit macht das richtig Spass...
Nun dürfte es aber den Regularien entsprechen.

Vielleicht kann ja jemand helfen...

Puschel74

Hallo,

Es geht hier nicht um "Regularien".
Es geht einfach nur darum das der Hilfesuchende die Helfenden nicht unbedingt mit "Textwürsten" erschlagen muss.
Und da das Forum diese Hilfestellung für Hilfesuchende bietet kann man diese auch gerne benutzen  ;D

Der Text sieht ja jetzt auch etwas ansprechender aus - finde ich (du nicht?)

Grüße

P.S.: Und ein kleines bischen darf der Hilfesuchenden den Helfenden das Leben doch auch leichter machen, oder nicht?
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Blebbens

Hast Du gelesen, dass ich hier kaum Empfang und Internetversorgung habe und rein textuell im Forum browse? Eine Seite zu laden dauert Minuten... Ich sehe keine Buttons... Und auch nicht den Code... Aber es sieht bestimmt besser aus.

Blebbens

Wäre super, wenn jemand mal ein Auge draufwerfen könnte - ich finde den Fehler nicht.

frank

hallo blebbens,

wenn du das gleiche wiki gelesen hast, welches ich gerade mal überflogen habe, hast du wohl grundsätzlich was falsch gemacht. http://www.fhemwiki.de/wiki/HM-SEC-SD_Rauchmelder. ich habe allerdings keine rauchmelder, daher vorsicht mit meinen ratschlägen.

1. homematic devices werden mit einer zentrale (fhem) gepairt. du musst also alle devices mit fhem pairen. anschliessend kontrollieren.
2. channels von homematic devices werden untereinander gepeert. immer sensorchannel mit aktorchannel. auch virtuelle channels.

wenn du einen virtuellen teamlead verwenden willst, muss dieser wohl mit den sd gepeert werden. nicht die sd untereinander.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Blebbens

Dann reicht es aus, wenn ich die Zeilen aus der cfg lösche? Ich muss die Melder , also irgendeine Hardware, nicht resetten?!
Würde dann nochmals nach Wiki pairen und peeren...
Und letztlich das define wieder genau so hinzufügen...

frank

im prinzip muss man eigentlich nie resetten. das ist für den notfall. wenn ein device mit einer zentrale gepairt ist, kannst/musst du das device über diese zentrale konfigurieren. auch peers kann man mit peerchan wieder löschen. steht alles im wiki oder einsteiger.doc.

in der fhem.cfg muss man gar nichts machen. besonders als anfänger sollte man immer über webif oder eingabezeile arbeiten. da die konfigurationsinformationen (auch peer-, pairinfos) im reellen device im flashspeicher vorhanden sind, nützt es nichts, irgendwelche zeilen zu löschen. dadurch handelst du dir höchstens weiteren ärger ein, weil die datensätze von device und zentrale dann unterschiedlich sind.

wenn du nur schnell irgendwie zum ziel kommen möchtest, ist resetten und alles nach wiki machen wohl die "einfachste" lösung. das verständnis bleibt aber weiter im dunkeln.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Pfriemler

Die attr peerIDs-Zeilen sind entbehrlich, fhem bildet die nur der Vollständigkeit halber nach, entscheidend ist das peering mit peerChan (peeren mit HM klappt per attr nicht außer bei virtuellen HM-Devices) - dessen Resultate tauchen aber nur in den readings der devices auf, nicht in der fhem.config (es sei denn, die attr wurden während des peerens von fhem erzeugt).
Zum Entpeeren genügt es also nicht, die attr zu löschen.
Ansonsten ist da noch ein Teamlead, der aber kein peering zu den SDs hat, wie Frank auch schon richtig sagte.
Ich würde die SDs mit dem Teamlead peeren. Zuvor musst du wohl die SDs entpeeren ... wenn du das schaffst, hast du viel gelernt dabei, das ist wirklich besser als reset.


Geht nich gips nich

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Blebbens

Okay, dann entpeere ich die einzelnen Melder/SDs, um diese dann zu peeren mit dem Teamlead erneut. Das behebt den Fehler?
Da ich der Anleitung gefolgt bin, bin ich mir nicht sicher, wo letztlich der Fehler konkret auftrat.

Lese mich ja gerade ein, aber das wirkt noch sehr abstrakt.


frank

ZitatDa ich der Anleitung gefolgt bin, bin ich mir nicht sicher, wo letztlich der Fehler konkret auftrat.

du bist eben nicht der anleitung gefolgt!
in der anleitung sind mehrere strategien zur rauchmelder benutzung zusammengefasst. du hast sie vermischt.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Blebbens

Okay, dann entpeere ich und befolge anschliessend nochmals das How-To... Da hatte ich wohl etwas missverstanden. Bin nur derzeit weit entfernt vom RPi und der DynDNS haut nicht hin.

Blebbens

Hi,

Ich glaube, irgendetwas habe ich nicht verstanden...:

DEF 10001001
NAME Sdteam
NR 69
STATE NACK
TESTNR 3
TYPE CUL_HM
chanNo 01
device TeamDev
peerList OG_FLUR_RM3,DG_FLUR_RM4,UG_FLUR_RM2,EG_WZ_RM1
sdTeam sdLead

peerList OG_FLUR_RM3,DG_FLUR_RM4,UG_FLUR_RM2,EG_WZ_RM1,


Ich habe den Sdteam mit den Rauchmeldern nun gepeert.
Aber den teamCall kann ich nicht auslösen... auch keinen Alarm.

Wo liegt denn noch mein Fehler, kann jemand kurz helfen ?
Würde am liebsten alles von Beginn an per Wiki neu probieren, es ist aber halt schon soviel gepaart und verändert.



martinp876

der Team sieht gut aus - aber wie sieht der SD aus? Kannt du ein List eines der SDs schicken? evtl ein getConfig vorher ausführen (zur Sicherheit)

Blebbens


DEF
23418D
IODev
hmusb
LASTInputDev
hmusb
MSGCNT
2
NAME
EG_WZ_RM1
NR
41
STATE
off
TYPE
CUL_HM
hmusb_MSGCNT
2
hmusb_RAWMSG
RBF610151,0001,149C0D54,FF,FFCC,03A01023418D4242420601000035
hmusb_RSSI
-52
hmusb_TIME
2014-06-21 19:02:24
lastMsg
No:03 - t:10 s:23418D d:424242 0601000035
peerList
OG_FLUR_RM3
protCmdPend
1 CMDs pending
protLastRcv
2014-06-21 19:02:24
protSnd
3 last_at:2014-06-21 21:08:40
protState
CMDs_processing...
rssi_at_hmusb
avg:-52 min:-52 max:-52 lst:-52 cnt:2
rssi_hmusb
avg:-53 min:-53 max:-53 lst:-53 cnt:1



Activity
alive
2014-06-21 19:02:20
CommandAccepted
no
2014-06-21 18:06:12
D-firmware
1.0
2014-06-01 17:38:05
D-serialNr
KEQ0708084
2014-06-01 17:38:05
PairedTo
0x424242
2014-06-21 18:06:16
R-pairCentral
0x424242
2014-06-21 21:08:40
RegL_00:
battery
ok
2014-06-21 19:02:24
level
0
2014-06-21 19:02:24
peerList
OG_FLUR_RM3,
2014-06-21 19:02:20
recentStateType
info
2014-06-21 19:02:24
state
off
2014-06-21 19:02:24


Kann man das so lesen? Geht derzeit leider nicht besser von unterwegs aus. Hoffe, es hilft, dort muss ja ein Fehler liegen.

Mr. P

Da sieht man allerdings ein paar Dinge. ;-)

*) Es handelt sich um das Gerät 'EG_WZ_RM1'.
*) Pairing mit der Zentrale passt.
*) Sollte dieses mit dem virtuellen Lead gepeert sein.
*) Es ist aber mit 'OG_FLUR_RM3' gepeert.
*) Scheint FHEM irgendeine Nachricht (1 CMDs pending) an den 'EG_WZ_RM1' loswerden zu wollen, was ihm aber nicht gelingt. Hier hilft vielleicht Druck auf den Config-Button vom SD. Wenn alles gut ist, sollte 'CMDs_done' erscheinen.
*) Im virtuellen Lead sind zwar die Peerings zu den einzelnen SDs eingetragen, aber die Konfiguration dürfte sich noch nicht zu den Geräten durchgesprochen haben. Anders gesagt: Du hast zwar das Peering durchgeführt, aber die Geräte wissen nichts davon.

Versuche zuerst einmal das Peering zwischen den SDs loszuwerden. Dies ist notwendig, damit du sie dem neuen Team hinzufügen kannst. Wenn die peerListen leer sind (leer bedeutet: peerIDs    00000000), mach anschließend noch ein getConfig auf den SD um die Config nochmals zu aktualisieren und sicher zu gehen, dass alles so ist, wie es sein soll und kontrolliere nochmals die Register.
Danach nochmal neu peeren.
Aber mach mal ein Gerät nach dem anderen. Erst wenn das eine tut, wie es soll, ist das Nächste dran.
Wichtig beim Peering hier ist immer, dass du in beiden peerListen der Geräte jeweils den Partner eingetragen haben musst. Vorher ist es nicht abgeschlossen und wird nicht funktionieren.
Greetz,
   Mr. P

Blebbens

#19
Ok, ich muss also die einzelnen Rauchmelder selbst in fhem unpeeren, da sie zur Zeit untereinander, aber eben nicht mit Sdteam (Teamlead) gepeert sind.

Nun finde ich den Befehl unpair, nicht aber so etwas wie unpeer.

Oder, unter den peerIDs ist folgendes eingetragen:
peerIDs 00000000,2339DB01

Müsste ich nicht einfach deleteattr zu diesen peerIDs sagen und anschließend ein peerChan zum Sdteam anlegen ?
Oder verstehe ich das falsch ?

Der Unpeer funktioniert nämlich nicht:
set EG_WZ_RM1 peerChan 0 OG_FLUR_RM3 single unset

fhem antwortet mit: "use - single [set|unset] actor - for smoke detector"

marc2

Hi !

Geht mit wie gewohnt mit "peerChan" aber "unset"  statt "set"

Gruß, Marc

Blebbens

Ne,
bei set EG_WZ_RM1 peerChan 0 OG_FLUR_RM3 single unset meckert fhem
bei set EG_WZ_RM1 peerChan 0 OG_FLUR_RM3 unset meckert fhem

Möchte doch den peer zwischen den Rauchmeldern lösen und jeweils den Peer zum Teamlead einstellen.


marc2

Also ich verstehe zwar nicht, warum der default "both" beim SD nicht zieht, aber folge doch einfach dem
Rat der Fehlermeldung und spendiere ein "actor" ....

Wenn das nicht hilft, würde ich die Dinger von der Decke reißen, kurz resetten und neu mit FHEM pairen.
Da FHEM die SDs noch kennt, bleiben die Einstellungen erhalten (room, etc). Du musst hinterher nur
gemäß Wiki neu mit dem Lead peeren.

Gruß, Marc

Blebbens

Hm, möchte doch einfach nur unpeeren... das muss doch gehen...
Warum funktioniert nicht: "set EG_WZ_RM1 peerChan 0 OG_FLUR_RM3 single unset"
Ist der Befehl falsch ? Der Peer besteht zwischen den obigen beiden Rauchmeldern.

DEF 23418D
IODev hmusb
LASTInputDev hmusb
MSGCNT 2
NAME EG_WZ_RM1
NR 41
STATE off
TYPE CUL_HM
hmusb_MSGCNT 2
hmusb_RAWMSG RC4ABFDEE,0001,19E707A3,FF,FFCB,03A01023418D4242420601000035
hmusb_RSSI -53
hmusb_TIME 2014-06-22 19:42:24
lastMsg No:03 - t:10 s:23418D d:424242 0601000035
peerList OG_FLUR_RM3
protLastRcv 2014-06-22 19:42:24
protSnd 2 last_at:2014-06-22 19:42:24
protState CMDs_done
rssi_at_hmusb avg:-53 min:-53 max:-53 lst:-53 cnt:2
rssi_hmusbavg: -53 min:-53 max:-53 lst:-53 cnt:1

marc2

Wie gesagt, probier mal ein

set EG_WZ_RM1 peerChan 0 OG_FLUR_RM3 single unset actor

Gruß, Marc


Blebbens

#25
Der Befehl wird angenommen, wenn auch (nach getConfig) weiterhin die alte peerID ausgewiesen wird?!
Versuche dann das Peering zum Sdteam...

Aber, sagt mal, sollte fhem mal ausfallen, müssen die Rauchmelder ja dennoch untereinander funken können. Dazu hatte ich diese vor fhem mal miteinander bekannt gemacht. Das bleibt weiterhin bestehen?

Ich habe die einzelnen Rauchmelder nun mit dem Teamlead "Sdteam" geleert mit:
set EG_WZ_RM1 peerChan 0 Sdteam single set actor (für jeweils jeden der vier Rauchmelder)

Dann sieht es nach 2 Minuten folgendermaßen aus (ohne gleich getConfig auszuführen) für einen Melder aus dem Dachgeschoss:
DEF 2339F6
IODev hmusb
LASTInputDev hmusb
MSGCNT 14
NAME DG_FLUR_RM4
NR 48
STATE off
TYPE CUL_HM
hmusb_MSGCNT 14
hmusb_RAWMSG RC52B02E0,0001,1A660A51,FF,FFC2,25A0102339F6424242012339DB0100000000
hmusb_RSSI -62
hmusb_TIME 2014-06-22 22:01:08
lastMsg No:25 - t:10 s:2339F6 d:424242 012339DB0100000000
peerList OG_FLUR_RM3
protLastRcv 2014-06-22 22:01:08
protSnd 14 last_at:2014-06-22 22:01:08
protState CMDs_done
rssi_at_hmusb avg:-62 min:-62 max:-62 lst:-62 cnt:14
rssi_hmusb avg:-61 min:-61 max:-61 lst:-61 cnt:1


Activity alive
2014-06-22 19:42:20
CommandAccepted no 2014-06-21 18:05:45
D-firmware 1.0 2014-06-01 17:47:47
D-serialNr KEQ0711668 2014-06-01 17:47:47
PairedTo 0x424242 2014-06-22 22:01:08
R-pairCentral 0x424242 2014-06-22 20:08:47
RegL_00: 02:01 0A:42 0B:42 0C:42 00:00 2014-06-22 22:01:08
battery ok 2014-06-22 19:42:23
level 0
2014-06-22 19:42:23
peerList OG_FLUR_RM3, 2014-06-22 22:01:08
recentStateType info 2014-06-22 19:42:23
state off 2014-06-22 19:42:23
teamCall from TeamDev:1


IODev hmusb deleteattr
actCycle 099:00 deleteattr
actStatus alive deleteattr
autoReadReg 4_reqStatus deleteattr
devStateIcon off:general_ok *:secur_alarm deleteattr
event-on-change-reading .* deleteattr
expert 2_full deleteattr
firmware 1.0 deleteattr
icon secur_smoke_detector deleteattr
model HM-SEC-SD deleteattr
msgRepeat 1 deleteattr
peerIDs 00000000,2339DB01 deleteattr
room CUL_HM deleteattr
serialNr KEQ0711668 deleteattr
subType smokeDetector deleteattr
webCmd statusRequest


Wäre super, wenn jemand schaut, ob das so okay ist. Mich verwirrt zumindest die peerID.

martinp876

sollte in Wiki erklärt sein:
alle SD wird an einen "teamLead" gepeert.
Wenn einer einen Alarm erkennt sendet er als teamlead einen Alarm und alle SDs die diese ID eingetragen haben heulen
FHEM  muss nicht laufen, auch wenn der Teamlead ein virtueller ist.

Blebbens

Okay, im Beitrag der c't stand, dass man vor fhem die Melder untereinander peeren muss, falls fhem mal ausfällt.

Nun bin ich nicht daheim, aber sehen alle obige zitierte Readings etc gut aus? Mich verwirrt noch die doppelte peerID.

Pfriemler

Zitat von: Blebbens am 23 Juni 2014, 12:18:26Mich verwirrt noch die doppelte peerID.
Ich sehe keine doppelte? Der von Dir zitierte DG_FLUR_RM4 ist aktuell gepeert mit OG_FLUR_RM3 (Reading "peerList"), in den Attributes taucht unter "peerIDs" neben der immer vorhandenen 00000000 noch die 2339DB01 auf, also Channel 1 vom 2339DB - was Du im Internal DEF" von  OG_FLUR_RM3 wiederfinden solltest, d.h. peerIDs nennt immer die FHEM-internen ID-Nummern, in peerList steht der übersetzte Name des Device(channels). OK?
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Blebbens

#29
Als etwas abstrakt empfinde ich es schon.

Mein Teamlead "Sdteam" listet nun die einzelnen SDs in der peerlist auf.
Der SD OG_Flur_RM3 meldet peerList self01, auch sagt er Teamcall from TeamDev... Aber ich höre keinen der Melder auf den CLl reagieren.

Dahingegen ist ein weiterer SD namens DG_Flur_RM4 zum SD OG_Flur_RM3 gepeert lt. Peerlist.

Mir ist noch schleierhaft, warum in den peerLists unterschiedliche Peerings stehen und warum die SD den teamCall sehen, aber nicht piepen. Und, muss die peerID 000000 nicht raus?

PeerIDs des Teamleads lauten...
peerIDs 2339DB01,2339F601,233B6C01,23418D01
peerList OG_FLUR_RM3,DG_FLUR_RM4,UG_FLUR_RM2,EG_WZ_RM1,


So ganz verstehe ich noch nicht, was dann bei den einzelnen Meldern genau stehen muss unter PeerList und PeerID und was dort nicht stehen darf.

Mr. P

#30
Zitat von: Blebbens am 23 Juni 2014, 20:30:11
Mein Teamlead "Sdteam" listet nun die einzelnen SDs in der peerlist auf.
Das ist zwar gut, aber soweit warst du bereits. Das alleine genügt nicht.

Zitat von: Blebbens am 23 Juni 2014, 20:30:11
Der SD OG_Flur_RM3 meldet peerList self01, auch sagt er Teamcall from TeamDev... Aber ich höre keinen der Melder auf den CLl reagieren.
Weil es nicht passt. self01 bedeutet, dass du ihn mit sich selbst gepeert hast.

Zitat von: Blebbens am 23 Juni 2014, 20:30:11
Dahingegen ist ein weiterer SD namens DG_Flur_RM4 zum SD OG_Flur_RM3 gepeert lt. Peerlist.
Also immer noch untereinander gepeert, anstatt mit dem virtuellen Lead. Peering aufheben, bei beiden SDs mit getConfig kontrollieren, ob diese auch wirklich in den Registern entfernt wurden und erst dann mit dem virtuellen Lead peeren.

Zitat von: Blebbens am 23 Juni 2014, 20:30:11
So ganz verstehe ich noch nicht, was dann bei den einzelnen Meldern genau stehen muss unter PeerList und PeerID und was dort nicht stehen darf.
Bei den HM-Devices ist 00000000 immer bei den peerIDs vorhanden.
Die peerList bzw. die peerIDs bei deinem virtuellen Lead würden schon passen. Allerdings sind diese solange wertlos, bis auch entsprechende Rauchmelder davon wissen. Diese müssen dann alle in deinem Fall bei den peerIDs 00000000,10001001 und bei der peerList Sdteam stehen haben.

Edit:
Und nochmal: Versuch es erst einmal mit einem SD hinzubekommen. Wenn du diesen erfolgreich getestet hast, kannst du den Nächsten angehen.
Greetz,
   Mr. P

martinp876

ich versuche es auch noch einmal zu erklären:
in jeden realen SD sollte an Ende auftauchen:
attr peerIDs 10001001,00000000
(internal) peerList Sdteam
(readings) peerList Sdteam

Wichtig: nicht selbst schreiben sondern mit peerChan setzen und ggf getConfig lesen. Sollte etwas anders in peerIDs stehen muss es erst gelöscht werden  - in der Form:
set DG_FLUR_RM4 peerChan 0 OG_FLUR_RM3 single unset remote

um den self01 zu entpeeren kannst du auch dessen ID nehmen
set DG_FLUR_RM3 peerChan 0 2339DB01 single unset remote

danach sollte im attr peerIDs 00000000 stehen. Erst dann kannst du neu peeren.

dann kannst du peeren gemäß wiki:
http://www.fhemwiki.de/wiki/HM-SEC-SD_Rauchmelder#virtueller_TeamLead

ZitatOkay, im Beitrag der c't stand, dass man vor fhem die Melder untereinander peeren muss, falls fhem mal ausfällt.
was für ein quatsch - keine ahnung, wer was  in c't über fhem über fhem dokumentiert.


probiere am Ende HMInfo zu befragen
define hm HMInfo
set hm configCheck

Blebbens

Das gibt es doch gar nicht...
Auf den Befehl hin "set DG_FLUR_RM4 peerChan 0 OG_FLUR_RM3 single unset remote" möchte fhem, dass ich einen peer eingebe.
Nun habe ich "set DG_FLUR_RM4 peerChan 0 OG_FLUR_RM3 single unset actor" eingegeben, der Befehl wurde ausgeführt... "remote" akzeptiert fhem nicht.

Aber...
Nach einem set getConfig erhalte ich bei DG_FLUR_RM4:
Internals / Peerlist: OG_FLUR_RM3
Readings / Perlist: OG_FLUR_RM3
Attributes / PeerIDs: 00000000,2339DB01

Verhext, falls man das so sagen kann.






martinp876

drehe es einmal
set DG_FLUR_RM3 peerChan 0 OG_FLUR_RM4 single unset actor

Blebbens

So, alle Rauchmelder reagieren mit etwas Zeitaufwand auf den TeamCall.

Besten Dank an alle für die Hilfe...

Ich habe nun die App PushOver gekauft, die mir einen Alarm auf das iPhone pushen soll... mit:
define Noti_Rauchmelder1PushOn notify EG_WZ_RM1:smoke-Alarm.* { system ("curl -s -F 'token=XXX' -F$
define Noti_Rauchmelder2PushOn notify UG_FLUR_RM2:smoke-Alarm.* { system ("curl -s -F 'token=XXX' $
define Noti_Rauchmelder3PushOn notify OG_FLUR_RM3:smoke-Alarm.* { system ("curl -s -F 'token=XXX' $
define Noti_Rauchmelder4PushOn notify DG_FLUR_RM4:smoke-Alarm.* { system ("curl -s -F 'token=XXX' $

Nun frage ich mich zum Schluss noch, wie ich es möglichst einfach hinbekomme, eine leere Batterie rechtzeitig gemeldet zu bekommen.

Mr. P

Freut mich, dass es nun endlich klappt!

Bezüglich deines Batterie-"Problems glaube ich, dass dir folgender Beitrag ein wenig weiterhelfen wird! :-)

http://www.fhemwiki.de/wiki/Batterie%C3%BCberwachung
Greetz,
   Mr. P

Blebbens

Ohje, sendMail scheint mit dem Test bereits nicht zu funktionieren...

sendEmail -f 'Epfänger@me.com' -t 'Absender@gmail.com' -u 'subject' -m 'body' -s 'smtp.gmail.com' -xu 'fhemmailer' -xp 'PAsswort' -o tls=auto

Daraufhin kommt die Fehlermeldung:  invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332

Um sicherzugehen, dass ich die Configdetails korrekt verstanden habe... in 99_Utils.pm habe ich folgende Routine hinzugefügt:

######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "Absender\@gmail.com";
my $konto = "Absender\@gmail.com";
my $passwrd = "Password";
my $provider = "smtp.provider.de:465";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}


Ich möchte über ein Gmail-Konto absenden, also per SSL eigentlich auf Port 465 (lt. meinem iPad).

Der fhem.cfg habe ich hinzugefügt:
define n_batt_chk notify .*:[Bb]attery.* { if($EVENT !~ m/ok$/mi/) { \
  { FB_mail('Empfänger@gmail.com', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
   Log 3, "$NAME : Batteriewarnung $EVENT";; \
  } \
}


Heisst, ich würde den jeweiligen "Absender" mit bspw. "HansFranz\gmail.com" ersetzen...

Was mach ich denn da falsch und wie bekomme ich den SSL-Fehler oben weg ?
Kann da noch jemand helfen ?

Mr. P

Hej Blebbens,

das liegt an einer fehlerhaften Version von sendEmail.
Der folgende Link sollte Abhilfe schaffen. ;-)

http://danielthat.blogspot.co.at/2012/10/how-to-send-email-from-command-line.html
Greetz,
   Mr. P

Blebbens

Klasse, der Versand per Console funktioniert...

Aber, lt. fhem.log beim Triggern:
trigger EG_WZ_RM1 Battery:low

2014.06.27 23:36:26 3: n_batt_chk return value: syntax error at (eval 94) line 1, near "/) "
syntax error at (eval 94) line 4, near ";
  }"

Diesen Fehler erhalte ich für eval 75 -94.

Dabei habe ich der fhem.cfg hinzugefügt:
define n_batt_chk notify .*:[Bb]attery.* { if($EVENT !~ m/ok$/mi/) { \
  { DebianMail('Test@gmail.com', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
   Log 3, "$NAME : Batteriewarnung $EVENT";; \
  } \
}


Ist hier "DebianMail" überhaupt korrekt ? Das müsste doch sendemail sein, oder ?

Mr. P

Probier es einmal damit:
define n_batt_chk notify (.*:[Bb]attery.*) { if( "%EVENT" !~ m/ok/ ) { \
  { DebianMail('Test@@gmail.com', 'FHEM Batteriewarnung', %NAME.': '.%EVENT)};; \
   Log 3, "%NAME : Batteriewarnung %EVENT";; \
  } \
}


Zitat von: Blebbens am 27 Juni 2014, 23:40:46
Ist hier "DebianMail" überhaupt korrekt ? Das müsste doch sendemail sein, oder ?
DebianMail ist schon in Ordnung. Das ist der entsprechende Funktionsaufruf für die Zeilen, die du in der myUtils.pm gemacht hast.
Und pass bei der Mailadresse auf. Du musst zwei @-Zeichen eingeben, damit es auch als solches erkannt wird.
Greetz,
   Mr. P

Blebbens

Und leider wieder ein neuer Fehler:
2014.06.28 12:19:37 3: n_batt_chk return value: syntax error at (eval 28) line 2, near "battery:"

2014.06.28 12:19:37 3: n_batt_chk return value: syntax error at (eval 29) line 2, near "battery:"

2014.06.28 12:19:37 3: n_batt_chk return value: syntax error at (eval 30) line 2, near "battery:"

2014.06.28 12:19:37 3: n_batt_chk return value: syntax error at (eval 31) line 2, near "battery:"

2014.06.28 12:21:02 3: n_batt_chk return value: syntax error at (eval 37) line 2, near "Battery:"




Blebbens

Weiß da vielleicht doch jemand Rat ?

Der low-Battery notify per Mail funktioniert nicht:
# define n_batt_chk notify (.*:[Bb]attery.*) { if( "%EVENT" !~ m/ok/ ) { \
  { DebianMail('test@@gmail.com', 'FHEM Batteriewarnung', %NAME.': '.%EVENT)};; \
   Log 3, "%NAME : Batteriewarnung %EVENT";; \
  } \
}


Obiges ist auch in der fhem.cfg über mehrere Zeilen niedergeschrieben... hoffe, es ist korrekt so.

Daraufhin schmeisst fhem den Fehler:
"n_batt_chk return value: syntax error at (eval 37) line 2, near "Battery:"

Mr. P

Versuch dein Glück damit:
# define n_batt_chk notify (.*:[Bb]attery:.*) { if( "%EVENT" !~ m/ok/ ) { \
  { DebianMail('test@@gmail.com', 'FHEM Batteriewarnung', '%NAME: %EVENT')};; \
   Log 3, "%NAME : Batteriewarnung %EVENT";; \
  } \
}
Greetz,
   Mr. P

Blebbens

Hi,

Auf deinen Code hin erscheint folgender Fehler:
n_batt_chk return value: Undefined subroutine &main::DebianMail called at (eval 104) line 2.

Warum funktionieren diese Standard-Wiki-Codes bei mir nahezu nie ?

Puschel74

Hallo,

ZitatWarum funktionieren diese Standard-Wiki-Codes bei mir nahezu nie ?
Weil du die Fehlermeldungen dazu nie liest vermutlich.

Hast du überhaupt eine sub DebianMail in einer deiner 99_wasweißich.pm?

Du solltest nach Möglichkeit auch die Mailroutine einbauen - so wie die Fehlermeldung besagt gibt es diese bei dir nicht.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Blebbens

Ich habe in der 99_Utils.pm genau folgendes stehen:

######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "test\@gmail.com";
my $konto = "test\@gmail.com";
my $passwrd = "test";
my $provider = "smtp.provider.de"; #OHNE PORT
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=yes -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}


Dabei ist TLS eingeschaltet worden und der Port hinter smtp weggelassen. Und 99_Utils.pm wird automatisch geladen ?

marc2

Ich werde nie verstehen, warum man sendEmail überhaupt in FHEM nutzen sollen  :o

  • Kennworte in Skripten sind mehr als unschön
  • Wenn der Provider ein Problem hat, bleibt FHEM je nach Fehlerbild komplett stehen, da versucht wird, die Mail synchron an den Provider zu senden (hatte letzteres als mein FHEM noch auf der Fritzbox lief und der "mailer" der Fritzox genutzt wurde)
Besser ist es, sich einen kleinen lokalen MTA (Postfix, oder was auch immer) zu installieren (auf Raspi, BBB, etc. kein Problem) und für seinen Provider zu konfigurieren (hierzu existieren unzählige Anleitungen).  FHEM kann die Mails dann z.B. einfach über "MIME::Lite" an den MTA schicken. Hat der Provider ein Problem, hat dies keine Auswirkungen auf FHEM, da der lokale MTAs die Mails annimmt und weiterleitet, bzw. in die Queue stellt, wenn es ein Problem gibt ....


use MIME::Lite;
use File::Basename;

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@meine-domain.de>',

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}



Gruß, Marc 

Blebbens

Dann werde ich mal Postfix als Satellitensystem aufsetzen.

Und dann setzte ich Deinen Code in die 99_Utils.pm?
Und anschliessend nutze ich welchen Code, um den NoBattery-Check zu senden?

marc2

Hi !

Hier das passende Notify:

define Battery_Check notify .*[Bb]attery:.* {\
if("%" !~ m/ok/) {\
{ my_mail('<MAIL ACCOUNT>@@<DOMAIN>',"Battery warning", "@ %","")};;\
    Log 3, "@ Battery warning: %";;\
}\
}


Gruß, Marc

Blebbens

#49
So... ich habe PostFix aufgesetzt per apt-get install postfix als "Satellitensystem".

Als Relay-Server habe ich smpt.gmail.com:465 eingegeben.

Die Datei main.cf habe ich wie folgt geändert:
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noplaintext noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
sender_canonical_maps = hash:/etc/postfix/sender_canonical


In der Datei sasl_password habe ich eingefügt "smpt.gmail.com fhem.test@gmail.com:Passwort".
Danach habe ich die Rechte angepasst mit chmod 600 /etc/postfix/sasl_password.
Und in die Datenbank übernommen mit postmap hash:/etc/postfix/sasl_password.

In die Datei "sendet_canonical" habe ich eingetragen:
root status@example.com
www-data www@example.com
Und in die Datenbank übernommen mit postmap /etc/postfix/sender_canonical.

Abschließend erfolgte:
update-rc.d postfix defaults
service postfix restart

Aber mein Test:
(
>    echo "Subject: Testnachricht"
>    echo " "
>    echo "Dies ist ein Test"
>    echo " "
> ) | /usr/bin/mail -s "Testnachricht" empfaenger@example.com


... wir beantwortet mit:
send-mail: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
postdrop: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol


Warum antwortet sendmail und was habe ich bei der Konfiguration von Postfix falsch angestellt ?
Kann jemand da helfen ?
Muss ich sendmail removen ?

Trigger ich einen Rauchmelder mit einem Battery:low, so steht im logfile:
Battery_Check return value: Undefined subroutine &main::my_mail called at (eval 164) line 3.
Heisst doch, mit my_mail kann nichts angefangen werden. Müsste dort nicht postfix hin?

Dabei habe ich obigen Code in fhem.cfg eingefügt:
define Battery_Check notify .*[Bb]attery:.* {\
if("%" !~ m/ok/) {\
{ my_mail('fhem.test@@gmail.com',"Battery warning", "@ %","")};;\
    Log 3, "@ Battery warning: %";;\
}\
}


Dabei bin ich mir bei obigen Codes nicht sicher, wo ich smtp.gmail.com und wo smtp.gmail.com:465 eingeben solte.

Letztlich möchte ich nur erreichen, dass fhem eine Mail an mich schickt bei leeren Batterien oder Alarmen.

marc2

Moin !

Zitatsend-mail: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
postdrop: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol

Dein System kann keine IPv6 aber Postfix versucht es nutzen. Das ist nur eine Warnmeldung, aber man kann  IPv6 in der 
main.cf auch abschalten indem man inet_protocols auf ipv4 setzt:

inet_protocols = ipv4

Zu welchem RPM gehört Dein "/usr/bin/mail" ? Es wird grundsätzlich nicht benötigt, Du kannst Die Mail direkt nach /usr/lib/sendmail pipen.
Letzteres gehört nicht zu sendmail sondern zu Postfix. Sendmail (nicht zu verwechseln mit dem sendEmail !!), war lange Zeit der
defakto Standard auf allen UNIX Systemen. Entsprechend stellt Postfix eine sendmail-konforme API zur Verfügung, und daher gibt
es auch nach wie vor ein /usr/lib/sendmail.

ZitatBattery_Check return value: Undefined subroutine &main::my_mail called at (eval 164) line 3.

Du hast die Funktion my_mail entweder nicht in Dein 99_myUtils.pm aufgenommen oder den "reload  99_myUtils.pm" vergessen.
Wichtg ist auch, dass Du die beiden Includes in 99_myUtils aufnimmst !

Gruß, Marc

Blebbens

#51
Naja, ich habe in meiner /opt/fhem/FHEM/99_Utils.pm deinen Code eingefügt:
use MIME::Lite;
use File::Basename;

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@meine-domain.de>',

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}


Damit ist doch die Funktion my_mail und die includes eingetragen, oder ?

ZitatZu welchem RPM gehört Dein "/usr/bin/mail" ? Es wird grundsätzlich nicht benötigt, Du kannst Die Mail direkt nach /usr/lib/sendmail pipen.
Letzteres gehört nicht zu sendmail sondern zu Postfix. Sendmail (nicht zu verwechseln mit dem sendEmail !!), war lange Zeit der
defakto Standard auf allen UNIX Systemen. Entsprechend stellt Postfix eine sendmail-konforme API zur Verfügung, und daher gibt
es auch nach wie vor ein /usr/lib/sendmail.

Das verstehe ich nicht ganz. Wie pipe ich die Mail direkt nach /usr/lib/sendmail und wie geht diese dann tatsächlich auf die Reise zu meinem Smartphone ?

Auch nach dem reload der 99_Utils mit dem Code weiterhin drin wirft er obigen Fehler raus.

In der /var/log/mail.log steht:
Jul  6 16:55:52 rpi postfix/smtp[4443]: 5C0D25E5F6: to=<empfaenger@example.com>, relay=smtp.gmail.com[74.125.136.108]:465, delay=71202, delays=70601/0.36/600/0, dsn=4.4.2, status=deferred (conversation with smtp.gmail.com[74.125.136.108] timed out while receiving the initial server greeting)
Jul  6 17:46:18 rpi postfix/pickup[4413]: 4C5DA5E601: uid=1000 from=<pi>
Jul  6 17:46:18 rpi postfix/cleanup[4519]: 4C5DA5E601: message-id=<20140706154618.4C5DA5E601@rpi>
Jul  6 17:46:18 rpi postfix/qmgr[2940]: 4C5DA5E601: from=<pi@rpi>, size=446, nrcpt=1 (queue active)
Jul  6 17:46:18 rpi postfix/smtp[4521]: CLIENT wrappermode (port smtps/465) is unimplemented
Jul  6 17:46:18 rpi postfix/smtp[4521]: instead, send to (port submission/587) with STARTTLS

marc2

Hi !

Zitat von: Blebbens am 06 Juli 2014, 17:43:40
Naja, ich habe in meiner /opt/fhem/FHEM/99_Utils.pm deinen Code eingefügt:
Das kann eigentlich nicht sein. Werden andere Funktionen in Deiner 99_Utils.pm gefunden ?

Zitat von: Blebbens am 06 Juli 2014, 17:43:40
Das verstehe ich nicht ganz. Wie pipe ich die Mail direkt nach /usr/lib/sendmail und wie geht diese dann tatsächlich auf die Reise zu meinem Smartphone ?

echo Testmail |  /usr/lib/sendmail mein@mailaccount.de

Zitat von: Blebbens am 06 Juli 2014, 17:43:40
Auch nach dem reload der 99_Utils mit dem Code weiterhin drin wirft er obigen Fehler raus.

In der /var/log/mail.log steht:
Jul  6 16:55:52 rpi postfix/smtp[4443]: 5C0D25E5F6: to=<empfaenger@example.com>, relay=smtp.gmail.com[74.125.136.108]:465, delay=71202, delays=70601/0.36/600/0, dsn=4.4.2, status=deferred (conversation with smtp.gmail.com[74.125.136.108] timed out while receiving the initial server greeting)
Jul  6 17:46:18 rpi postfix/pickup[4413]: 4C5DA5E601: uid=1000 from=<pi>
Jul  6 17:46:18 rpi postfix/cleanup[4519]: 4C5DA5E601: message-id=<20140706154618.4C5DA5E601@rpi>
Jul  6 17:46:18 rpi postfix/qmgr[2940]: 4C5DA5E601: from=<pi@rpi>, size=446, nrcpt=1 (queue active)
Jul  6 17:46:18 rpi postfix/smtp[4521]: CLIENT wrappermode (port smtps/465) is unimplemented
Jul  6 17:46:18 rpi postfix/smtp[4521]: instead, send to (port submission/587) with STARTTLS

[/code]

Ich würde mal behaupten, dass Deine Postfix Konfiguration nicht stimmt. Schau Dir mal das folgende Rezept an:

http://blog.mx17.net/2012/11/05/postfix-with-gmail-as-relay-on-debian-squeeze/

Gruß, Marc

Blebbens

#53
Danke für die Anleitung, beim letzten Schritt hapert es:
"sudo cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem >> /etc/postfix/cacert.pem"
Führt zu: "-bash: /etc/postfix/cacert.pem: Keine Berechtigung"

Der Restart von Postfix via "/etc/init.d/postfix restart" führt zu:
[....] Stopping Postfix Mail Transport Agent: postfixsed: kann /var/spool/postfix/pid/master.pid nicht lesen: Keine Berechtigung

Reicht ein chmod 777 auf /var/spool/postfix/pid/master.pid ? Und wie ist die Berechtigung oben anzupassen ?

Daraufhin folgt nämlich:
[ ok ] Stopping Postfix Mail Transport Agent: postfix.
[....] Starting Postfix Mail Transport Agent: postfixrm: Entfernen von ?etc/localtime? nicht m?glich: Keine Berechtigung
chmod: Beim Setzen der Zugriffsrechte f?r ?etc/localtime?: Die Operation ist nicht erlaubt

marc2

Als welcher User arbeitest Du ? Das muss als root erfolgen !

Gruß, Marc

Blebbens

Arbeite als User Pi.
Einfach Pi per su zum Super user benennen?

no_Legend

Wenn es raspbian ist einfach for jedem befehlt ein sudo stellen.
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Blebbens

Ich hatte allen Befehlen bereits sudo vorangestellt...

Auf "sudo cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem >> /etc/postfix/cacert.pem"
folgt "-bash: /etc/postfix/cacert.pem: Keine Berechtigung"

In 99_Utils.pm ist auch ganz sicher die Subroutine eingebaut... wie kann ich denn sicherstellen, dass fhem die 99_Utils überhaupt nutzt/einliest ?

Puschel74

Hallo,

Zitatwie kann ich denn sicherstellen, dass fhem die 99_Utils überhaupt nutzt/einliest ?
Alles was mit 99 anfängt wird automatisch bei einem fhem-start eingelesen.
Die 99_Utils.pm würde ich persönlich meiden weil diese bei einem update überschrieben werden kann - besser auf eine 99_myUtils.pm ausweichen, siehe Wiki.

Zitatfolgt "-bash: /etc/postfix/cacert.pem: Keine Berechtigung"
Schaut für mich nach einem Rechteproblem aus - wie auch schon dabei steht "Keine Berechtigung".

Du hast ein Linux-System?
Dann mach dich mal mit Linux vertraut  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Blebbens

#59
Naja, ich stelle den Befehlen "sudo" voran, was doch im Grunde root-Rechten entspricht.

Die 99_Utils enthält ja nun den code für Postfix, was installiert wurde.
Triggere ich nun "leere Batterien", so steht im Logfile:
"Battery_Check return value: Undefined subroutine &main::my_mail called at (eval 5962) line 3."

Es muss doch ein Fehler in der fhem.cfg vorhanden sein:

define Battery_Check notify .*[Bb]attery:.* {\
        if("%" !~ m/ok/) {\
                { my_mail('test.fhem@@gmail.com',"Battery warning", "@ %","")};;\
                  Log 3, "@ Battery warning: %";;\
        }\
}


Oder eben in 99_myUtils.pm:
use MIME::Lite;
use File::Basename;

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@xxx-dyndns.org>',

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}


Allzu leicht scheint dieser Fehler ja nicht - für mich Anfänger zumindest - durch Foren etc zu lösen sein.

no_Legend

Kannst du mit der Konsole Emils versenden?
Hast du mal alternative sendmail probiert?
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

marc2

Das reicht so nicht, siehe http://www.fhemwiki.de/wiki/99_myUtils_anlegen.

Wen Du also noch gar keine 99_myUtils hast musst Du die Grundstruktur anlegen. Ingesamt sieht sie dann wie folgt aus:

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
use MIME::Lite;
use File::Basename;

sub myUtils_Initialize($$) {
  my ($hash) = @_;
}

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@meine-domain.de>',
                          To      => $rcpt,
                          Subject => $subject,
                          Type    => 'multipart/mixed'
                       );

        $MIME::Lite::AUTO_CONTENT_TYPE = 1;

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}

1;


Du solltest Dir bei Gelegenheit einmal das FHEM Einführungsdokument durchlesen: http://fhem.de/Heimautomatisierung-mit-fhem.pdf

Gruß, Marc

Blebbens

Ja, die Einsteiger-Doku muss ich noch zu Ende lesen... gern würde ich derzeit einfach nur den Mailversand bei low battery fixen...
Denn auch mit der obigen 99_myUtils.pm kommt der identische Fehler:
Battery_Check return value: Undefined subroutine &main::my_mail called at (eval 37) line 3.

Daraus schließe ich, dass die 99_myUtils.pm nun das Problem ist, in der fhem die notwendige Unterroutine nicht finden kann.

marc2


  • reload 99_myUtils.pm
  • Wo liegt die 99_myUtils.pm

Gruß, Marc

Blebbens

Habe fhem schon mit shutdown restart neu gestartet, den Raspberry ebenfalls.
Die 99_myUtils.pm liegt in /opt/fhem/FHEM.

marc2

Wir die Datei in der Weboberfläche unter "Edit Files" angezeigt ?

Blebbens


frank

wenn das deine funktion ist
use MIME::Lite;
use File::Basename;

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@xxx-dyndns.org>',

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}

und du diese meldung bekommst
Zitat"Battery_Check return value: Undefined subroutine &main::my_mail called at (eval 5962) line 3."
warum schaust du dann nicht in zeile 3 und stellst fest, dass am ende von zeile2 eine offene klammer ohne entsprechendes gegenstück existiert? wozu gibt es eigentlich fehlermeldungen? da brauch ich nicht mal den inhalt zu verstehen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

marc2

#68
Wohl wahr, Du hast ja fast alle Headerattribute entfernt und die Klammer am Ende gleich mit ....

Blebbens

Ne, ich habe genau den Code von marc2 oben copy&paste in 99_myUtils.pm gesetzt unter /opt/fhem/FHEM.

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
use MIME::Lite;
use File::Basename;

sub myUtils_Initialize($$) {
  my ($hash) = @_;
}

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@meine-domain.de>',
                          To      => $rcpt,
                          Subject => $subject,
                          Type    => 'multipart/mixed'
                       );

        $MIME::Lite::AUTO_CONTENT_TYPE = 1;

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}

1;


Nach einem "reload 99_myUtils.pm" tritt dann aber unter fhem folgender Fehler auf:
Can't locate MIME/Lite.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/99_myUtils.pm line 6.
BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 6.


marc2

#70
Zitat von: Blebbens am 09 Juli 2014, 21:12:57
Ne, ich habe genau den Code von marc2 oben copy&paste in 99_myUtils.pm gesetzt unter /opt/fhem/FHEM.

Das glaube ich kaum, denn der Fehler passte leider sehr genau zu dem kastrierten Code, den Du gepostet hattest.
Und warum tritt dann jetzt plötzlich ein anderer Fehler auf, obwohl Du ja FHEM bereits zuvor komplett neu gestartet
hattest ...

Zitat von: Blebbens am 09 Juli 2014, 21:12:57
Can't locate MIME/Lite.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/99_myUtils.pm line 6.
BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 6.

Da wird dann wohl das MIME::Lite Modul nicht installiert sein:

apt-get update && apt-get install libmime-lite-perl

Blebbens

Super, danke, keine Fehlermeldung...

Nun meldet fhem im log, dass die Nachricht an meine Mailadresse versendet wurde.
Leider kam diese nicht an, auch nach Stunden nicht.

Laut mail.log:

Jul  6 06:25:16 rpi postfix/cleanup[3814]: 07BBB5E601: message-id=<20140706042516.07BBB5E601@rpi$
Jul  6 06:25:16 rpi postfix/qmgr[2940]: 07BBB5E601: from=<status@example.com>, size=840, nrcpt=1$
Jul  6 06:25:16 rpi postfix/local[3820]: warning: inet_protocols: disabling IPv6 name/address su$
Jul  6 06:25:16 rpi postfix/local[3820]: 07BBB5E601: to=<root@rpiHM>, orig_to=<root>, relay=loca$
Jul  6 06:25:16 rpi postfix/qmgr[2940]: 07BBB5E601: removed
Jul  6 07:25:48 rpi postfix/qmgr[2940]: 5C0D25E5F6: from=<pi@rpi>, size=446, nrcpt=1 (queue ac$
Jul  6 07:25:48 rpi postfix/trivial-rewrite[3882]: warning: inet_protocols:


Och, dabei sah die Meldung des Versands so gut aus.

Blebbens

Vielleicht kann bitte doch noch jemand helfen:

Die Log-Datei von fhem besagt, die Mail sei an meine E-Mail-Adresse abgeschickt worden - diese ist jedoch nicht angekommen.

Beim Test der Berechtigungen von postfix mit
"sudo cat /etc/ssl/certs/Equifax_Secure_Global_eBusiness_CA.pem >> /etc/postfix/cacert.pem"
folgt "-bash: /etc/postfix/cacert.pem: Keine Berechtigung"

Nun bin ich neu in der Linux-Welt, aber stelle ich Sudo voran, so müssten die Berechtigungen doch vorhanden sein (User pi ist eingeloggt) ?

Ich habe die Anleitung zur Konfiguration von postfix gem http://blog.mx17.net/2012/11/05/postfix-with-gmail-as-relay-on-debian-squeeze/ befolgt, lediglich obiger Rechteprüfungsbefehl schlägt fehl.

Leider weiß ich nun nicht, warum die Mail nicht ankommt trotz Erfolgsmeldung unter fhem - liegt es ggf. nur an obiger Berechtigung ?

marc2

Also entweder macht Du das einfach mal direkt als root wie in dem Rezept beschrieben (was ist daran bloß so schwierig ??),
oder Du musst die beiden Befehle "sudo konform" umschreiben:

cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem  | sudo tee -a /etc/postfix/cacert.pem
cat /etc/ssl/certs/Equifax_Secure_Global_eBusiness_CA.pem  | sudo tee -a /etc/postfix/cacert.pem


Blebbens

So, einiges gelernt...

Vielen Dank, auf den trigger folgt nun die E-Mail...

Nun müsste man doch analog zu Battery_check auch eine Funktion zur E-Mail-Meldung bei Alarm einfügen können.

Schön, dass es nun läuft...

marc2

#75
War ja eine recht schwierige Geburt aber schön, dass es jetzt läuft  :)

define Feueralarm_aktiviert notify Rauchmelder_Team.smoke_detect:.* {\
        DoFireAlarm("$EVENT");; \
}


Und in 99_myUtils.pm

sub DoFireAlarm($) {
        my ($eventstring) = @_;
        my ($event,$device) = split(/:/,$eventstring);
        $device =~ s/^\s+|\s+$//g;
        # Log(3, "String: $eventstring, Device: \"$device\"");
        if ($device !~ m/TeamDev|-/)  {
                Log(3,"Feuerlaram ausgeloest durch $device !!!");
                my_mail($value{mailrcpt},"Feuerlaram ausgeloest durch $device !!!","Feuerlaram ausgeloest durch $device !!!","");
                my_sms($value{smsrcpt},1,"Feuerlaram ausgeloest durch $device !!!");
                AllLightsOn;
        } elsif ($device eq "TeamDev") {
                Log(3,"Test des Feueralarms");
                my_mail($value{mailrcpt},"Test des Feueralarms","Test des Feueralarms","");
        } else {
                Log(3,"Feueralarm beendet");
                my_mail($value{mailrcpt},"Feueralarm beendet","Feueralarm beendet","");
        }
}


Den SMS-Teil und AllLightsOn musst Du rauschmeissen und $value{mailrcpt} entsprechend ersetzen. Wenn der Name Deines
virtuellen SD nicht TemaDev lautet, musst Du auch das anpassen !!! Gleiches gilt für den Channel_01 des virtuellen SDs im Notify 
(Rauchmelder_Team) !

Gruß, Marc

P.A.Trick

Hi Marc,
erst einmal Danke für die DoFireAlam Funktion. Eine Frage habe ich noch: Wie testest du denn die Melder?
Gruß
Patrick
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Blebbens

Ich muss aus gegebenem Anlass nochmal nachfragen:

Gestern lösten nacheinander sämtliche Rauchmelder (grundlos) aus... ich drückte erst bei einem, später bei allen vieren den Knopf, doch alle heulten munter weiter (ca. 1 Minute).

"define sdnf notify Sdteam:level:.199 set Sdteam alarmOff"
Sollte das nicht bewirken, dass bei Druck eines Knopfes alle Melder verstummen ?

Wobei auch enthalten:
define ActionDetector CUL_HM 000000
attr ActionDetector actCycle 600
attr ActionDetector event-on-change-reading .*
attr ActionDetector model ActionDetector

marc2

Hallo Patrick,

Zitat von: P.A.Trick am 23 Juli 2014, 22:41:57
erst einmal Danke für die DoFireAlam Funktion. Eine Frage habe ich noch: Wie testest du denn die Melder?

den "Gesamtalarm" teste ich ganz normal über "alarmOn" auf dem TeamDev. Den einzelnen Melder kann man
meines Wissens wirklich nur lokal, durch Drücken des Knopfes testen (ist wohl zu gleich auch eine Kalibrierung
des Sensors in der Rauchkammer). Bei dem lokalen Test bleibt der Melder allerdings HM-mäßig still. Ich
denke, wenn Du den Ernstfall testen willst, brauchst Du ein Testspray. Habe ich bisher aber auch noch nicht
gemacht.

Gruß, Marc

8PABenny

Grüße,

ich hab auch ein Problem und dachte der Betreff passt schon.
Und zwar hab ich mein Rauchmelder in FHEM eingefügt, soweit so gut, nun wollte ich per Pushover benachrichtigt werden, nur leider funktioniert das ganze, wenn alarmOn und ich dann einen Status Request mache. Wieso setzt der Rauchmelder seinen Status nicht selber bei Auslösung?

Raspberry Pi, Homematic, Wifilight mit LW 12, Milightbridge mit 3 Milights,