Beide Buttons gleichzeitig klicken heißt NEID
Beiträge von horschte
-
-
-
Nimm die Version 1 der Xiaomi oder aqara Sensoren. Die Version 2 ist Bluetooth.
Version 1 ist zudem deutlich kleiner.Im Grunde sind beides identische Sensoren. Der aqara kann zusätzlich Luftdruck messen, wofür auch immer man das braucht. Ansonsten würde ich schwören, dass die Xiaomi Sensoren ursprünglich auch aqara sind. Sie sind sich einfach zu ähnlich und in der Praxis macht Xiaomi das bei Kooperationen immer so.
-
ui hier ist es ja schon voll und du hast eigentlich genug kompetente beratung.
aus mehrjähriger erfahrung kann ich dir im bereich der sensoren (bspw temp, kontakt) auf jeden fall xiaomi/aqara ans herz legen. wie @darkside40 bereits sagte: super zuverlässig, günstig, unglaublich lange laufzeit pro batterieladung -
ein paar elite sind auch für "normale" preise erhältlich via "sofortkauf"
-
bei mir ähnlich wie bei @darkside40
ich nutze homematic auch an einem nuc.
der kram läuft bei mir absolut stabil und es gibt rein technisch gesehen nichts zu meckern.
heutzutage würde ich aber auch eher auf zigbee setzen. das erscheint mir einfach moderner und ist ohne weitere hardware (hm bridge, hm zentrale) ins smarthome integrierbar.
dazu kommt das in meinen augen gruselige design bei homematic. wenn ich bspw das neue aqara thermostat sehe und dann bei mir ein HMIP-eTRV-2 zum vergleich.... -
2x ring intercom (bundle mit ladegerät und 2 akkus) zum einführungspreis von jeweils 99€.
lieferung soll am 03.11. erfolgen.
der spätere marktpreis soll wohl 169€ sein.
https://www.amazon.de/dp/B0B5FX7QHX/ref=gw_de_desk_sc_vicc_rtc_oak22?pf_rd_r=E9WBFVG92N3CG5FZEP4Q&pf_rd_p=f7f271e0-e3f5-4555-b61b-97ffebda6e10&pd_rd_r=9b55ba4f-3eb3-4d05-a44d-8273ef3ed6c7&pd_rd_w=1IFyg&pd_rd_wg=woPlx&ref_=pd_gw_unk&tag=kodinerds04-21 [Anzeige] -
ich nutze schon seit anfang meiner smarthome zeit für alles eine externe datenbank. zuerst mysql, später umgezogen zu mariadb.
die verwaltung ist einfach x-mal komfortabler gegenüber influxdb. ausserdem gefällt mir der gedanke, dass ich bei einem lokalen datenträgerdefekt keinerlei datenbankeinträge (wetteraufzeichnungen bspw) verlieren werde.
das ganze hat sich auch schon ausgezahlt, als ich eine spiegelung einspielen musste. -
mega danke horste - musste noch den alexa tag bei color abändern dann hat das direkt funktioniert:
sry, den channel in deinem item hatte ich übersehen. ich hab bei mir übrigens ColorController.color als tag. keine ahnung wo da nun wieder der unterschied liegt.
btw...du kannst mit endpoint auch channelgruppen regeln. wenn du also bspw "alexa wz lampen grün" nutzen willst und mehrere rgb(w) lampen im raum hast.
dafür müssen die einzelnen channels deiner lampen zusätzlich in neue übergruppen.CodeGroup WZ_Schranklicht_Steuerung "Wohnzimmer Schranklicht" {alexa="Endpoint.Light"} Group:Color WZ_Schranklicht_Farbe "Wohnzimmer Schranklicht" (WZ_Schranklicht_Steuerung) {alexa="ColorController.color"} Group:Switch:OR(ON, OFF) WZ_Schranklicht_Schalter "Wohnzimmer Schranklicht" (WZ_Schranklicht_Steuerung) {alexa="PowerController.powerState"} Group:Dimmer WZ_Schranklicht_Dimmer "Wohnzimmer Schranklicht" (WZ_Schranklicht_Steuerung) {alexa="BrightnessController.brightness"}
alle meine color channels von diversen lampen sind also zusätzlich zur gruppe für die einzelsteuerung einer lampe (group endpoint) in der gruppe WZ_Schranklicht_Farbe. die gruppe WZ_Schranklicht_Farbe (zeile 2) ist jetzt wie in zeile 2 zu sehen ist der übergruppe WZ_Schranklicht_Steuerung (zeile 1) untergeordnet. so kannst du dann ganze lampengruppen per alexa steuern...ohne rules o.ä.
-
Code
Group Office_LED_RGBW "Wunschname" {alexa="Endpoint.Light"} Switch Office_LED_Rohr "Office LED Strip Rohr [%s]" <light> (Office_LED_RGBW) {channel="mqtt:topic:e5d254d7:led_stripe_rohr:state"} Dimmer Office_LED_Rohr_Dimmer "Office LED Strip Rohr Dimmer [%d]" (Office_LED_RGBW) {channel="mqtt:topic:e5d254d7:led_stripe_rohr:brightness", alexa="PowerController.powerState,BrightnessController.brightness", homekit="Lighting, Lighting.Brightness"} Dimmer Office_LED_Rohr_temp "Office LED Strip Rohr Temp [%d]" (Office_LED_RGBW) {alexa="ColorTemperatureController.colorTemperatureInKelvin", channel="mqtt:topic:e5d254d7:led_stripe_rohr:color_temp"} Color Office_LED_Rohr_color "Office LED Strip Rohr color [%d]" (Office_LED_RGBW) {alexa="ColorTemperatureController.colorTemperatureInKelvin", channel="mqtt:topic:e5d254d7:led_stripe_rohr:color"}
alle channels der lampe (dimmer, switch, color, colortemp) müssen in eine gruppe. diese gruppe dann wie in zeile 1 erstellen und dann mit deinem gewünschten rufnamen versehen und den alexa tag {alexa="Endpoint.Light"} der gruppe anfügen. deine bisherigen alexa einträge für die lampe in der alexa app oder dem alexa webif entfernen und neu suchen lassen. die lampe wird dann als gruppe angezeigt und nicht wie bisher jeder channel einzeln. die vergebenen namen bei den channels in anführungszeichen werden ignoriert, da kann also stehen was will. es zählt in dieser config nur der rufnahme der gruppe.
weisston kann auf wunsch auch noch genauer definiert werden. damit ist es bspw möglich mit rufname + "wärmer/kälter" die schrittgröße zu bestimmen.
-
ein selection sitemap eintrag für ein color item kann doch den wert auch so senden, da braucht es keine rule....bspw
Selection item=Farbelabel="Farbe" mappings=["0,100,100"="Rot", "120,100,100"="Grün"] -
-
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
-
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. -
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:
Code
Alles anzeigenrule "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
ohne verzögerung bei der sprachaussage würde es so aussehen
Code
Alles anzeigenrule "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
-
per dropdown menü die daten senden....würde ich zumindest so umsetzen wenn ich keinen colorpicker nutzen will.
-
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 : Anrufernameunterdrü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.
-
nutze leider kein zigbee2mqtt. kann da also nur bedingt helfen.
die color integration in openhab findest du hier. ist zwar ikea, sollte sich aber nicht wirklich unterscheiden
https://community.openhab.org/t/oh3-zigbee2m…ft-right/133837 -
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:Code
Alles anzeigen............................. 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) } } ]) ..................
- 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 -
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.