Gleich schon mal eine Frage, bevor ich das heute Abend zuhause ausprobiere.
"es gibt mehrere alarme zur auswahl, siehst du im openhab webif"
Wo? Ich finde da nichts
Gleich schon mal eine Frage, bevor ich das heute Abend zuhause ausprobiere.
"es gibt mehrere alarme zur auswahl, siehst du im openhab webif"
Wo? Ich finde da nichts
dann finde ich das für dich. item anlegen (channel anpassen)
String Alexa_Buero_Alarm "Alexa Büro Alarm" {channel="amazonechocontrol:echo:account1:echo5:playAlarmSound"}
das sind die strings, die du diesem item oder zu einer gruppe, in der diese items drin sind senden kannst
ECHO:system_alerts_alarming_03
ECHO:system_alerts_soothing_01
ECHO:system_alerts_soothing_05
ECHO:system_alerts_atonal_02
ECHO:system_alerts_atonal_03
ECHO:system_alerts_melodic_01
ECHO:system_alerts_melodic_02
ECHO:system_alerts_melodic_03
ECHO:system_alerts_melodic_05
ECHO:system_alerts_melodic_06
ECHO:system_alerts_melodic_07
ECHO:system_alerts_musical_02
ECHO:system_alerts_repetitive_01
ECHO:system_alerts_repetitive_04
ECHO:system_alerts_rhythmic_02
Alles anzeigen
http://192.168.2.X:8080/basicui/CMD?Alexa_Buero_Alarm=ECHO:system_alerts_alarming_03 im browser nutzen um schneller deinen favoriten rauszufinden (openhab ip und itemnamen natürlich anpassen)
btw...vlt ersetzt du in der großen rule announce durch tts. das dingdong am anfang bei announce brauchst du ja nicht mehr wenn du alarm zusätzlich hast.
Ich habe 2 Fehler:
org.openhab.core.model.script.engine.ScriptExecutionException: The name 'RINGING' cannot be resolved to an item or type; line 15, column 47, length 7
2022-09-16 18:55:20.394 [WARN ] [b.core.model.script.actions.BusEvent] - Cannot convert 'ECHO:system_alerts_atonal_02' to a command type which item 'ueberall_Alarm' accepts: [].
und weil das mit der Gruppe ueberall_Alarm nicht funktioniert, habe ich es noch einmal mit einem Echo alleine probiert. Dann geht der Alarm.
Caused by: org.openhab.core.model.script.engine.ScriptExecutionException: The name 'RINGING' cannot be resolved to an item or type; line 15, column 47, length 7
2022-09-16 19:42:05.924 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxIncomingCall' changed from UNDEF to 1234,4321
2022-09-16 19:42:05.927 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxCallState' changed from IDLE to RINGING
==> /var/[definition='1','0']log[/definition]/openhab/openhab.[definition='1','0']log[/definition] <==
2022-09-16 19:42:07.039 [INFO ] [org.openhab.core.model.script.Anruf ] - Anrufer Name: Patrick Anrufer Nummer: 1234
==> /var/[definition='1','0']log[/definition]/openhab/events.[definition='1','0']log[/definition] <==
2022-09-16 19:42:07.047 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' received command ECHO:system_alerts_melodic_05
2022-09-16 19:42:07.050 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_PlayAlarmSound' predicted to become ECHO:system_alerts_melodic_05
2022-09-16 19:42:07.054 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' changed from to ECHO:system_alerts_melodic_05
2022-09-16 19:42:08.025 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_NextAlarm' changed from UNDEF to 2022-09-16T19:42:12.005+0200
2022-09-16 19:42:10.981 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'MotionSensor_Lux' changed from 2.0 to 8
==> /var/[definition='1','0']log[/definition]/openhab/openhab.[definition='1','0']log[/definition] <==
2022-09-16 19:42:17.047 [WARN ] [ore.internal.scheduler.SchedulerImpl] - Scheduled job failed and stopped
java.lang.reflect.UndeclaredThrowableException: null
at com.sun.proxy.$Proxy438.apply(Unknown Source) ~[?:?]
at org.openhab.core.model.script.actions.ScriptExecution.lambda$0(ScriptExecution.java:82) ~[?:?]
at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$12(SchedulerImpl.java:184) ~[?:?]
at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$1(SchedulerImpl.java:87) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.openhab.core.model.script.engine.ScriptExecutionException: The name 'RINGING' cannot be resolved to an item or type; line 15, column 47, length 7
at org.openhab.core.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:141) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1008) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:971) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:247) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1222) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1152) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:1098) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1008) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:249) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:833) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:245) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:475) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:251) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:213) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:47) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:30) ~[?:?]
... 10 more
==> /var/[definition='1','0']log[/definition]/openhab/events.[definition='1','0']log[/definition] <==
2022-09-16 19:42:17.435 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxIncomingCall' changed from 1234,4321 to UNDEF
2022-09-16 19:42:17.438 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxCallState' changed from RINGING to IDLE
2022-09-16 19:42:17.457 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' received command
2022-09-16 19:42:17.459 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_PlayAlarmSound' predicted to become
2022-09-16 19:42:17.463 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' changed from ECHO:system_alerts_melodic_05 to
2022-09-16 19:42:18.323 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_NextAlarm' changed from 2022-09-16T19:42:12.005+0200 to UNDEF
2022-09-16 19:42:51.439 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxMissedCalls' changed from 72 to 73
2022-09-16 19:43:07.059 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Nummernspeicher' changed from to 19:42 Uhr Patrick ,
Alles anzeigen
Ich habe 2 Fehler:
ohne deine items und rules machst du es mir schwer zu helfen. einen fehler habe ich schon gesehen.
also poste dein zeug bitte erst mal
Bitteschön.
Ich hoffe, dass ich keine items vergessen habe
String fboxCallState "Call State [%s]" (gFritzBox) { channel="avmfritz:fritzbox:1234:call_state" }
Call fboxIncomingCall "Phone ringing in [%1$s to %2$s]" (gFritzBox) { channel="avmfritz:fritzbox:4234:incoming_call" }
Call fboxOutgoingCall "Phone ringing out [%1$s to %2$s]"(gFritzBox) { channel="avmfritz:fritzbox:1234:outgoing_call" }
Call fBoxActiveCall "Call established: [%1$s]" (gFritzBox) { channel="avmfritz:fritzbox:1234:active_call" }
Number fboxMissedCalls "Missed Calls" (gFritzbox) {channel="tr064:fritzbox:45687:missedCalls_10"}
String Nummernspeicher "[%s]"
String Anrufer_Abfrage "Verpasste" {alexa="ModeController.mode" [supportedModes= "Anrufe = Anrufe,Nachrichten = Nachrichten" ]}
//String currentTime
String FritzEingehenderAngerufener "Eingehender Anruf - Angerufener [%s]" (gAnrufmonitor) ["Status"] {channel="avmfritz:fritzbox::456778:incoming_call" [profile="transform:PHONEBOOK", phonebook="5678"]}
String FritzEingehenderAnrufer "Eingehender Anruf - Anrufer [%s]" (gAnrufmonitor) ["Status"] {channel="avmfritz:fritzbox:192_168_178_1:incoming_call" [profile="transform:PHONEBOOK", phonebook="tr064_fritzbox_123456", phoneNumberIndex=1, matchcount="8"]}
String FritzAktiverAnrufer "Aktiver Anruf - Anrufer [%s]" (gAnrufmonitor) ["Status"] {channel="avmfritz:fritzbox:192_168_178_1:active_call" [profile="transform:PHONEBOOK", phonebook="tr064_fritzbox_45678"]}
String FritzAusgehenderAngerufener "Ausgehender Anruf - Angerufener [%s]" (gAnrufmonitor) ["Status"] {channel="avmfritz:fritzbox:192_168_178_1:outgoing_call" [profile="transform:PHONEBOOK", phonebook="tr064_fritzbox_45678"]}
String FritzAusgehenderAnrufer "Ausgehender Anruf - Anrufer [%s]" (gAnrufmonitor) ["Status"] {channel="avmfritz:fritzbox:192_168_178_1:outgoing_call" [profile="transform:PHONEBOOK", phonebook="tr064_fritzbox_5678", phoneNumberIndex=1, matchcount="8"]}
Group ueberall_Alarm // Gruppe Alarm überall
String Echo_Living_Room_PlayAlarmSound "Play Alarm Sound" (Alexa_Living_Room, ueberall_Alarm) {channel="amazonechocontrol:echo:account1:echo:playAlarmSound"}
String Echo_Kitchen_PlayAlarmSound "Play Alarm Sound" (Alexa_Kitchen, ueberall_Alarm) {channel="amazonechocontrol:echoshow:account1:echoshow8:playAlarmSound"}
Alles anzeigen
rule "Eingehender Anruf"
when
Item fboxCallState changed to RINGING
then
var tr064Actions = getActions("tr064","tr064:fritzbox:123456")
var String caller_number = (fboxIncomingCall.state as StringListType).getValue(1)
var String caller_name = tr064Actions.phonebookLookup(caller_number)
logInfo("Anruf", "Anrufer Name: " + caller_name + " Anrufer Nummer: " + caller_number)
var String msg = "Eingehender Anruf von: "+ caller_name
var String msg2 = caller_name
val String currentTime = String::format( "%1$tH:%1$tM", new java.util.Date )
val verpassteanrufe = fboxMissedCalls.state as Number
Echo_Living_Room_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
createTimer(now.plusSeconds(10), [|
while (fboxCallState.state == RINGING) {
Echo_Living_Room_Announcement.sendCommand(msg)
Echo_Kitchen_Announcement.sendCommand(msg)
Thread::sleep(4000)
}
])
createTimer(now.plusSeconds(60), [|
val verpassteanrufeneu = fboxMissedCalls.state as Number
if(verpassteanrufe != verpassteanrufeneu){
Nummernspeicher.postUpdate(Nummernspeicher.state + currentTime + " Uhr " + msg2 + ", ")
}
])
end
rule "telefon alarm beenden"
when
Item fboxCallState changed from RINGING to IDLE
then
Echo_Living_Room_PlayAlarmSound.sendCommand("")
end
rule "anrufspeicher leeren"
when
Item Dummy changed to ON
then
Nummernspeicher.postUpdate("")
end
rule "alexa verpasste anrufe"
when
Item Anrufer_Abfrage received command
then
val anruferliste = Nummernspeicher.state.toString
switch receivedCommand {
case receivedCommand == "Anrufe": {
Echo_Kitchen_Announcement.sendCommand(anruferliste)
Echo_Living_Room_Announcement.sendCommand(anruferliste)
}
}
end
Alles anzeigen
zeile 15 in der rule mal ändern, das löst den ersten fehler aus ...Ringing muss in anführungszeichen ..... (fboxCallState.state == "RINGING") {.....
dann nochmal auslösen und das [definition='1','0']log[/definition] hier posten.
aus Group ueberall_Alarm mach mal Group:String ueberall_Alarm in deinen items
Ich habe erst einmal nur die Anführungsstriche gesetzt.
Jetzt gibt es keine Fehlermeldung. Die Ansage wer anruft wird auch mit wiederholt.
Die Ansage beendet sich mit dem Auflegen nicht.
Ach nein, das ist ja kein Fehler.
In Kombination mit dem Klingeln ist "Eingehender Anruf von ..... irgendwie unrund. Da muss ich noch etwas finden das mir besser gefällt.
Wenn die Nummer nicht eingespeichert ist, wird mir ja wohl die Nummer vorgelesen das wird ja unter Umständen sehr lang und kollidiert dann mit dem "Klingeln".
Dann muss nur noch das Klingeln mit Annehmen / Beenden des Anrufs aufhören.
Die Gruppe probiere ich dann morgen. Jetzt gäbe es Ärger
Die Ansage beendet sich mit dem Auflegen nicht.
da musst du das item fboxCallState beobachten. das beendet die ansage etc
In Kombination mit dem Klingeln ist "Eingehender Anruf von ..... irgendwie unrund. Da muss ich noch etwas finden das mir besser gefällt.
alles eine frage der timer. optional erst announcment, dann klingeln...oder 3sek klingeln, dann ansage.
unbekannte nummern könntest du mit einem if rausfiltern und da dann bspw "unbekannte nummer" durchsagen lassen.
Ich bin -glaube ich- auf einem ganz guten Weg das zum Laufen zu bekommen.
Musste gestern nachmittag irgendwann aufhören, sonst wäre der Haussegen in Schieflage gekommen
Was mir jetzt aufgefallen ist: Nach Annehmen / Abbruch des Anrufs kommt häufig noch mal eine Ansage.
Liegt das daran, dass die while Schleife noch abgearbeitet wird, obwohl ich ein Echo_Living_Room_Announcement.sendCommand("") geschickt habe?
Allerdings haut das mit der Gruppe immer noch nicht hin. Ist in der Rule vielleicht nicht so schön, aber dann lasse ich die Befehle halt einzeln für jeden Echo drin.
Der "Schlafzimmer-Echo" will allerdings nicht so richtig mitspielen. Anstatt den Alarmton zu spielen startet er das Radio. Möglicherweise hat das damit zu tun, dass er uns eigentlich als Radiowecker dient. Weiß da jemand Abhilfe?
Wegen des Filters für nicht eingespeicherte Nummern habe ich mal gesucht, wie ich das lösen könnte.
Erste Idee war zu vergleichen, ob in caller_name ein Name oder eine Nummer steht.
Das wird für mich wohl nicht lösbar sein, zu vergleichen ob der Inhalt Zahlen oder Buchstaben sind.
Jetzt bin ich auf die Idee gekommen einfach (?) caller_name und caller_number zu vergleichen. Denn wenn die Nummer nicht eingespeichert ist, steht in beiden Variablen die Nummer.
Ob ich das selber hin bekomme?
ich stelle mir das so vor
Aber meine Logik und OH Kenntnisse sind SEHR beschränkt.
Ich will nur mal zeigen, daß ich mich bemühe
ruels und items usw liefer ich später von zuhause aus nach.
Was mir jetzt aufgefallen ist: Nach Annehmen / Abbruch des Anrufs kommt häufig noch mal eine Ansage.
Liegt das daran, dass die while Schleife noch abgearbeitet wird, obwohl ich ein Echo_Living_Room_Announcement.sendCommand("") geschickt habe?
while fragt das item fboxCallState.state ab. du musst also ans telefon rangehen und das [definition='1','0']log[/definition] beobachten wie schnell fboxCallState bemerkt, dass abgenommen wurde.
Der "Schlafzimmer-Echo" will allerdings nicht so richtig mitspielen. Anstatt den Alarmton zu spielen startet er das Radio. Möglicherweise hat das damit zu tun, dass er uns eigentlich als Radiowecker dient. Weiß da jemand Abhilfe?
das wird mit dem wecker zu tun haben. du kannst ja beim wecker definieren ob sounds oder radio. das wird wohl den sound überschreiben. finde ich auf die schnelle auch keine infos dazu.
Wegen des Filters für nicht eingespeicherte Nummern habe ich mal gesucht, wie ich das lösen könnte.
Erste Idee war zu vergleichen, ob in caller_name ein Name oder eine Nummer steht.
Das wird für mich wohl nicht lösbar sein, zu vergleichen ob der Inhalt Zahlen oder Buchstaben sind.
inhaltlich hast du da schonmal nen korrekten weg. ausführung ist aber noch mangelhaft
btw...pack deinen code hier im editor auch immer in den korrekten code tag, dann lässt sich das einfacher lesen.
caller_name und caller_number zu vergleichen (sollten sie die gleichen werte bei nem anruf von einer unbekannten nummer haben) ist auf jeden fall ein guter ansatz.
beide werte sind in deiner rule schon definiert, du musst deine ansage also nur mit if+else splitten.
hier mal der erste komplette timer in deiner ursprüngleichen rule abgeändert:
.............................
createTimer(now.plusSeconds(10), [|
while (fboxCallState.state == RINGING) {
if(caller_name == caller_number){
Echo_Living_Room_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Echo_Kitchen_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Thread::sleep(4000)
}
else {
Echo_Living_Room_Announcement.sendCommand(msg)
Echo_Kitchen_Announcement.sendCommand(msg)
Thread::sleep(4000)
}
}
])
..................
Alles anzeigen
- zeile 3-7 wird verglichen ob caller number und caller name gleich sind (bitte prüfe im [definition='1','0']log[/definition] vorher ob das auch wirklich bei unbekannten nummern so ist) und falls ja, wird eine "unbekannt ansage" gesendet
- zeile 8-11 wird nur abgearbeitet, wenn zeile 3-7 nicht eingetreten ist
Ich komme zur Zeit nicht an den Code ran.
Ich habe aber mittels fboxCallState.state den Alarm beim Annehmen des Anrufs beim Beenden des Anrufs durch den Anrufer überwacht.
Das schaltet den Alarm aus. Das geht auch relativ schnell im [definition='1','0']log[/definition], dass von RINGING auf ACTIVE bzw auf IDLE umgeschaltet wird.
Nur die Ansage kommt dann noch einmal.
Was mir aufgefallen ist, das Telefon selber klingelt meistens 2 mal, bevor die Echos sich melden. Auch das: http://192.168.2.X:8080/basicui/CMD?Alexa_Buero_Alarm=ECHO:system_alerts_alarming_03 braucht relativ lange bis die Echos sich melden.
Das ist aber sicher einfach die Trägheit des Systems, die sich nicht ändern lässt.
Zitat von horschte- zeile 3-7 wird verglichen ob caller number und caller name gleich sind (bitte prüfe im [definition='1','0']log[/definition] vorher ob das auch wirklich bei unbekannten nummern so ist) und falls ja, wird eine "unbekannt ansage" gesendet
ja, das taucht im [definition='1','0']log[/definition] so auf.
Bin gespannt was bei einer unterdrückten Nummer da auftaucht. Das könnte man ja ggf auch nutzen wenn da gar keine Nummer steht.
caller number und caller name gleich => nicht im Telefonbuch eingetragen => Ansage : nicht gespeicherte Nummer
caller number und caller name ungleich => im Telefonbuch eingetragen=> Ansage : Anrufername
ggf
caller number und caller name gleich "" =>unterdrückte Nummer=> Ansage : unterdrückte Nummer.
Ich hoffe, daß ich heute abend weitertesten kann. Dann liefer ich auch den Code nach.
Ich komme zur Zeit nicht an den Code ran.
Ich habe aber mittels fboxCallState.state den Alarm beim Annehmen des Anrufs beim Beenden des Anrufs durch den Anrufer überwacht.
Das schaltet den Alarm aus. Das geht auch relativ schnell im [definition='1','0']log[/definition], dass von RINGING auf ACTIVE bzw auf IDLE umgeschaltet wird.
Nur die Ansage kommt dann noch einmal.
poste mal ein komplettes [definition='1','0']log[/definition] 1sek vor dem anruf bis 10sek nach dem anruf). wirklich nur einträge entfernen, die damit gar nichts zu tun haben. telefonnummern kannst du natürlich editieren.
ich möchte da gern mal den genauen zeitlichen ablauf sehen.
Bin gespannt was bei einer unterdrückten Nummer da auftaucht. Das könnte man ja ggf auch nutzen wenn da gar keine Nummer steht.
caller number und caller name gleich => nicht im Telefonbuch eingetragen => Ansage : nicht gespeicherte Nummer
caller number und caller name ungleich => im Telefonbuch eingetragen=> Ansage : Anrufername
unterdrückte nummer kann man in der rule abfragen und dann einen zusätzlichen if zweig einbauen. das sollte kein problem sein. muss ich nur wissen, was caller_number bei einer unterdrückten nummer anzeigt.
So, @horschte Weiter gehts.
ule "Eingehender Anruf"
when
Item fboxCallState changed to RINGING
then
var tr064Actions = getActions("tr064","tr064:fritzbox:d4b59b645b")
var String caller_number = (fboxIncomingCall.state as StringListType).getValue(1)
var String caller_name = tr064Actions.phonebookLookup(caller_number)
logInfo("Anruf", "Anrufer Name: " + caller_name + " Anrufer Nummer: " + caller_number)
var String msg = "Anruf von: "+ caller_name
var String msg2 = caller_name
val String currentTime = String::format( "%1$tH:%1$tM", new java.util.Date )
val verpassteanrufe = fboxMissedCalls.state as Number
Echo_Living_Room_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
Echo_Kitchen_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
//Echo_Bedroom_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
createTimer(now.plusSeconds(2), [|
while (fboxCallState.state == "RINGING") {
Echo_Living_Room_TTS.sendCommand(msg)
Echo_Kitchen_Announcement.sendCommand(msg)
Thread::sleep(4000)
}
])
createTimer(now.plusSeconds(60), [|
val verpassteanrufeneu = fboxMissedCalls.state as Number
if(verpassteanrufe != verpassteanrufeneu){
Nummernspeicher.postUpdate(Nummernspeicher.state + currentTime + " Uhr " + msg2 + ", ")
}
])
end
rule "telefon alarm beenden"
when
Item fboxCallState changed from RINGING to IDLE
or
Item fboxCallState changed from RINGING to ACTIVE
then
Echo_Living_Room_PlayAlarmSound.sendCommand("")
Echo_Kitchen_PlayAlarmSound.sendCommand("")
Echo_Bedroom_PlayAlarmSound.sendCommand("")
Echo_Living_Room_TTS.sendCommand("")
Echo_Kitchen_TTS.sendCommand("")
Echo_Bedroom_TTS.sendCommand("")
end
rule "Anruferspeicher nach Abfrage leeren"
when
Item Anrufer_Abfrage received command
then
val anruferliste = Nummernspeicher.state.toString
switch receivedCommand {
case receivedCommand == "Anrufe": {
Echo_Kitchen_Announcement.sendCommand(anruferliste)
Nummernspeicher.postUpdate("")
}
}
end
rule "anrufspeicher leeren"
when
Item Dummy changed to ON
then
Nummernspeicher.postUpdate("")
end
rule "alexa verpasste anrufe"
when
Item Anrufer_Abfrage received command
then
val anruferliste = Nummernspeicher.state.toString
switch receivedCommand {
case receivedCommand == "Anrufe": {
Echo_Kitchen_Announcement.sendCommand(anruferliste)
Echo_Living_Room_Announcement.sendCommand(anruferliste)
}
}
end
Alles anzeigen
Log nach einem Anruf ohne Eintrag der Nummer ins Fritzbox Telefonbuch. Nicht abgenommen
==> /var/[definition='1','0']log[/definition]/openhab/openhab.[definition='1','0']log[/definition] <==
2022-09-19 17:32:56.085 [INFO ] [org.openhab.core.model.script.Anruf ] - Anrufer Name: 01525 Anrufer Nummer: 01525
==> /var/[definition='1','0']log[/definition]/openhab/events.[definition='1','0']log[/definition] <==
2022-09-19 17:32:56.064 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxIncomingCall' changed from UNDEF to 05725,01525
2022-09-19 17:32:56.068 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxCallState' changed from IDLE to RINGING
2022-09-19 17:32:56.092 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' received command ECHO:system_alerts_melodic_05
2022-09-19 17:32:56.103 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Kitchen_PlayAlarmSound' received command ECHO:system_alerts_melodic_05
2022-09-19 17:32:56.112 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_PlayAlarmSound' predicted to become ECHO:system_alerts_melodic_05
2022-09-19 17:32:56.121 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Kitchen_PlayAlarmSound' predicted to become ECHO:system_alerts_melodic_05
2022-09-19 17:32:56.138 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' changed from to ECHO:system_alerts_melodic_05
2022-09-19 17:32:56.140 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_PlayAlarmSound' changed from to ECHO:system_alerts_melodic_05
2022-09-19 17:32:56.982 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_NextAlarm' changed from UNDEF to 2022-09-19T17:33:01.011+0200
2022-09-19 17:32:56.986 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_NextAlarm' changed from UNDEF to 2022-09-19T17:33:01.012+0200
2022-09-19 17:32:58.097 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_TTS' received command Anruf von: 01525
2022-09-19 17:32:58.110 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Kitchen_Announcement' received command Anruf von: 01525
2022-09-19 17:32:58.121 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_TTS' predicted to become Anruf von: 01525
2022-09-19 17:32:58.131 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Kitchen_Announcement' predicted to become Anruf von: 01525
2022-09-19 17:32:58.139 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_TTS' changed from to Anruf von: 01525
2022-09-19 17:32:58.140 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_Announcement' changed from NULL to Anruf von: 01525
2022-09-19 17:32:58.143 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_Announcement' changed from Anruf von: 01525 to
2022-09-19 17:33:02.103 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_TTS' received command Anruf von: 01525
2022-09-19 17:33:02.108 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Kitchen_Announcement' received command Anruf von: 01525
2022-09-19 17:33:02.121 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_TTS' predicted to become Anruf von: 01525
2022-09-19 17:33:02.124 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Kitchen_Announcement' predicted to become Anruf von: 01525
2022-09-19 17:33:02.128 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_Announcement' changed from to Anruf von: 01525
2022-09-19 17:33:02.135 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_Announcement' changed from Anruf von: 01525 to
2022-09-19 17:33:05.918 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_TTS' changed from Anruf von: 01525 to
2022-09-19 17:33:06.108 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_TTS' received command Anruf von: 01525
2022-09-19 17:33:06.111 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Kitchen_Announcement' received command Anruf von: 01525
2022-09-19 17:33:06.123 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_TTS' predicted to become Anruf von: 01525
2022-09-19 17:33:06.126 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Kitchen_Announcement' predicted to become Anruf von: 01525
2022-09-19 17:33:06.130 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_TTS' changed from to Anruf von: 01525
2022-09-19 17:33:06.133 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_Announcement' changed from to Anruf von: 01525
2022-09-19 17:33:06.134 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_Announcement' changed from Anruf von: 01525 to
2022-09-19 17:33:07.571 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxIncomingCall' changed from 05725,01525 to UNDEF
2022-09-19 17:33:07.574 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxCallState' changed from RINGING to IDLE
2022-09-19 17:33:07.582 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' received command
2022-09-19 17:33:07.602 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Kitchen_PlayAlarmSound' received command
2022-09-19 17:33:07.609 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Bedroom_PlayAlarmSound' received command
2022-09-19 17:33:07.619 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Living_Room_TTS' received command
2022-09-19 17:33:07.624 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Kitchen_TTS' received command
2022-09-19 17:33:07.635 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_PlayAlarmSound' predicted to become
2022-09-19 17:33:07.639 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Echo_Bedroom_TTS' received command
2022-09-19 17:33:07.649 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Kitchen_PlayAlarmSound' predicted to become
2022-09-19 17:33:07.653 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Bedroom_PlayAlarmSound' predicted to become
2022-09-19 17:33:07.662 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Living_Room_TTS' predicted to become
2022-09-19 17:33:07.666 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Kitchen_TTS' predicted to become
2022-09-19 17:33:07.674 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_PlayAlarmSound' changed from ECHO:system_alerts_melodic_05 to
2022-09-19 17:33:07.676 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Echo_Bedroom_TTS' predicted to become
2022-09-19 17:33:07.684 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_PlayAlarmSound' changed from ECHO:system_alerts_melodic_05 to
2022-09-19 17:33:07.686 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_TTS' changed from Anruf von: 01525 to
2022-09-19 17:33:08.374 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Living_Room_NextAlarm' changed from 2022-09-19T17:33:01.011+0200 to UNDEF
2022-09-19 17:33:08.379 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Echo_Kitchen_NextAlarm' changed from 2022-09-19T17:33:01.012+0200 to UNDEF
2022-09-19 17:33:35.609 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'fboxMissedCalls' changed from 99 to 100
2022-09-19 17:33:56.107 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Nummernspeicher' changed from to 17:32 Uhr 01525,
Alles anzeigen
Ach übrigens, wie kriege ich das hin, den Nummernspeicher zu persistieren? Im Moment habe ich rrd4j. Das speichert aber nur Zahlen ?
Bei unterdrückter Nummer steht im Log erwartungsgemäß nichts.
also laut [definition='1','0']log[/definition] macht dein system alles richtig nach dem annehmen. ggf ist das wirklich der geschwindigkeit der amazon api geschuldet. du könntest threadsleep mal ein wenig höher setzen zum testen.
Was mir aufgefallen ist, das Telefon selber klingelt meistens 2 mal, bevor die Echos sich melden. Auch das: http://192.168.2.X:8080/basicui/CMD?Alexa_Buero_Alarm=ECHO:system_alerts_alarming_03 braucht relativ lange bis die Echos sich melden.
gerade mal gegengetestet. alarm dauert bei mir auch nen kleinen moment bis was passiert. das ist dann wohl von amazon abhängig. kannste nichts machen. die sprachausgabe mit nmummernansage ist verzögert...hast ja auch nen timer da. wenn du lieber sofort eine sprachausgabe möchtest, dann muss der timer weg.
zum thema unbekannte und unterdrückte nummern:
wie ich das sehe ist in beiden fällen caller number und caller name gleich. in einem fall befüllt mit der nummer und im anderen fall undef.
mein o.g. vorschlag if/else zu nutzen sollte also alle 3 möglichkeiten (nummer wird gesendet + name vorhanden, nur nummer vorhanden, keine nummer vorhanden) abdecken.
das wäre dann deine abgeänderte obere rule:
rule "Eingehender Anruf"
when
Item fboxCallState changed to RINGING
then
var tr064Actions = getActions("tr064","tr064:fritzbox:d4b59b645b")
var String caller_number = (fboxIncomingCall.state as StringListType).getValue(1)
var String caller_name = tr064Actions.phonebookLookup(caller_number)
logInfo("Anruf", "Anrufer Name: " + caller_name + " Anrufer Nummer: " + caller_number)
var String msg = "Anruf von: "+ caller_name
var String msg2 = caller_name
val String currentTime = String::format( "%1$tH:%1$tM", new java.util.Date )
val verpassteanrufe = fboxMissedCalls.state as Number
Echo_Living_Room_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
Echo_Kitchen_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
//Echo_Bedroom_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
createTimer(now.plusSeconds(2), [|
while (fboxCallState.state == "RINGING") {
if(caller_name == caller_number){
Echo_Living_Room_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Echo_Kitchen_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Thread::sleep(4000)
}
else {
Echo_Living_Room_Announcement.sendCommand(msg)
Echo_Kitchen_Announcement.sendCommand(msg)
Thread::sleep(4000)
}
}
])
createTimer(now.plusSeconds(60), [|
val verpassteanrufeneu = fboxMissedCalls.state as Number
if(verpassteanrufe != verpassteanrufeneu){
Nummernspeicher.postUpdate(Nummernspeicher.state + currentTime + " Uhr " + msg2 + ", ")
}
])
end
Alles anzeigen
ohne verzögerung bei der sprachaussage würde es so aussehen
rule "Eingehender Anruf"
when
Item fboxCallState changed to RINGING
then
var tr064Actions = getActions("tr064","tr064:fritzbox:d4b59b645b")
var String caller_number = (fboxIncomingCall.state as StringListType).getValue(1)
var String caller_name = tr064Actions.phonebookLookup(caller_number)
logInfo("Anruf", "Anrufer Name: " + caller_name + " Anrufer Nummer: " + caller_number)
var String msg = "Anruf von: "+ caller_name
var String msg2 = caller_name
val String currentTime = String::format( "%1$tH:%1$tM", new java.util.Date )
val verpassteanrufe = fboxMissedCalls.state as Number
Echo_Living_Room_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
Echo_Kitchen_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
//Echo_Bedroom_PlayAlarmSound.sendCommand("ECHO:system_alerts_melodic_05")
while (fboxCallState.state == "RINGING") {
if(caller_name == caller_number){
Echo_Living_Room_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Echo_Kitchen_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Thread::sleep(4000)
}
else {
Echo_Living_Room_Announcement.sendCommand(msg)
Echo_Kitchen_Announcement.sendCommand(msg)
Thread::sleep(4000)
}
}
createTimer(now.plusSeconds(60), [|
val verpassteanrufeneu = fboxMissedCalls.state as Number
if(verpassteanrufe != verpassteanrufeneu){
Nummernspeicher.postUpdate(Nummernspeicher.state + currentTime + " Uhr " + msg2 + ", ")
}
])
end
Alles anzeigen
Ach übrigens, wie kriege ich das hin, den Nummernspeicher zu persistieren? Im Moment habe ich rrd4j. Das speichert aber nur Zahlen ?
numerische werte. einen string wie bspw die anrufliste kann rrd4j in openhab nicht.
die meisten nutzen influxdb, ich persönlich jdbc (mariadb).
wenn du mit rrd4j glücklich bist, dann lass das einfach so. die anruferliste verlierst du ja nur beim basteln am system/neustart, sprich wenn du zuhause bist. dann kannste ja eh keinen anruf verpassen.
wenn du nicht da bist und das system normal läuft speichert openhab die liste ja.
Ich habe gestern noch einige Zeit getestet.
Der dritte Echo läuft jetzt auch. Ich habe ein paar Einstellungen im Echo verändert. Welche es jetzt war kann ich dank wildem Hin und Her gar nicht sagen. Der Hauptverdächtige ist allerdings der "Standard-Alarmton". Der stand auf dem Radio-Sender. Jetzt habe ich das auf einfacher Wecker gestellt. Außerdem habe ich den Eindruck, dass auch diese Einstellungen am Echo recht lange brauchen, bis OH das mitbekommt.
createTimer(now.plusSeconds(2), [|
while (fboxCallState.state == "RINGING") {
if(caller_name == caller_number){
Echo_Living_Room_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Echo_Kitchen_Announcement.sendCommand("Eingehender Anruf von unbekannt!")
Thread::sleep(4000)
Das Thread::sleep in dem Teil der rule bedeutet, dass der Befehl alle 4000 ms wiederholt wird?
Es bleibt nämlich dabei, dass diese Ansage nicht sofort mit dem Annehmen oder Beenden es Anrufs gestoppt wird. Es kann passieren, dass noch eine ansage kommt, wenn man schon abgenommen hat.
Das lässt sich wohl nicht ändern?
Ich habe mir jetzt noch eine Ansagerule gebastelt, die sich meldet wenn der Fernseher angeschaltet wird.
Ich bin mir aber noch nicht sicher, ob ich das gut finde den Nummernspeicher nach der Ansage sofort zu löschen.
Aber wahrscheinlich ist es ausreichend die Anrufe einmal angesagt zu bekommen. Im Fritzfon bleiben sie mir ja erhalten.
Vielen Dank bis hier!
Das Thread::sleep in dem Teil der rule bedeutet, dass der Befehl alle 4000 ms wiederholt wird?
Es bleibt nämlich dabei, dass diese Ansage nicht sofort mit dem Annehmen oder Beenden es Anrufs gestoppt wird. Es kann passieren, dass noch eine ansage kommt, wenn man schon abgenommen hat.
Das lässt sich wohl nicht ändern?
genau. solange fboxCallState auf ringing ist kommt ne ansage, 4 sekunden pause und dann nochmal ne ansage. du könntest das testweise höher setzen, evt gibts dann keine überlappungen mehr.
Außerdem habe ich den Eindruck, dass auch diese Einstellungen am Echo recht lange brauchen, bis OH das mitbekommt.
welche einstellungen? polling time ist konfigurierbar, also wie oft openhab einstellungen/infos etc von alexa abfragt.
btw...ich hatte meinen letzten und vorletzten post noch etwas ergänzt
Soweit ich das von hier sehen kann, habe ich keine Polling-time konfiguriert.
Habe hier nur zugriff über myopenhab und da weiß ich nicht, ob ich im "Code" der things alles aus den things files angezeigt bekomme.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!