Du hast offensichtlich zwei Rules für die gleiche Aufgabe, die gezeigte Rule dreht die Lautstärke runter,
Wie sieht die andere Rule aus?
Sinnvoller wäre es, hier eine Rule mit Script als Action zu verwenden. Wenn Du Dich nicht mit der DSL auseinandersetzen willst, nimm am besten Blockly, das ist auch für Anfänger gut zu bedienen (weil es Dir nur gültige Befehle anbietet - Allenfalls kannst Du dann bei Itemnamen pfuschen...
Als Blockly Code in yaml sähe das so aus:
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: Binareingang_Klingel_EG_Binareingang_Turklingel
state: CLOSED
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
blockSource: <xml
xmlns="https://developers.google.com/blockly/xml"><variables><variable
id="zRN^)Q~m1=usGUkrp2*X">vol</variable></variables><block
type="variables_set" id="Py7v9_r%D,jJ]T]zr:_/" x="159" y="56"><field
name="VAR" id="zRN^)Q~m1=usGUkrp2*X">vol</field><value
name="VALUE"><block type="math_number" id="q2D|urja7SM/c,Dd|2ZW"><field
name="NUM">60</field></block></value><next><block type="controls_if"
id="9}XGSd[_#sO40/;S9xFp"><value name="IF0"><block type="logic_compare"
id="~CV[du{DA6Im/6jHz9cP"><field name="OP">GT</field><value
name="A"><block type="oh_getitem_attribute"
id="oLgi{YE0D`30Yq5`YReJ"><mutation
attributeName="NumericState"></mutation><field
name="attributeName">NumericState</field><value name="item"><shadow
type="oh_getitem" id="lg+-ZIGzHY`dFinUYK-f"><value
name="itemName"><shadow type="oh_item"
id="Z::_woKg.S{D;-gEzPO6"><mutation itemName="MyItem"
itemLabel="MyItem"></mutation><field
name="itemName">MyItem</field></shadow></value></shadow><block
type="oh_getitem" id="yaw*RJ$h;C*z=r5/_9dE"><value
name="itemName"><shadow type="oh_item"
id="Z::_woKg.S{D;-gEzPO6"><mutation itemName="MyItem"
itemLabel="MyItem"></mutation><field
name="itemName">MyItem</field></shadow><block type="oh_item"
id="Eh~Q)|Oy71)MMg]9hb@x"><mutation
itemName="OG_Jalousieaktor_4_Jalousie_OG_Kind_Sud"
itemLabel=""></mutation><field
name="itemName">OG_Jalousieaktor_4_Jalousie_OG_Kind_Sud</field></block></value></block></value></block></value><value
name="B"><block type="math_number" id="mYy0;)0*@UPDwd.My9h2"><field
name="NUM">80</field></block></value></block></value><statement
name="DO0"><block type="variables_set" id="n*~u1=Ener5U_OEW!0_h"><field
name="VAR" id="zRN^)Q~m1=usGUkrp2*X">vol</field><value
name="VALUE"><block type="math_number" id="L:oK!(%~3c9wBYOUVmw/"><field
name="NUM">25</field></block></value></block></statement><next><block
type="oh_playmedia_sink_volume" id="RWjzgl4sx!AJA9;;4i4K"><value
name="fileName"><shadow type="text" id="aYd/=J,b!dyIk;c4bS,O"><field
name="TEXT">doorbell.mp3</field></shadow></value><value
name="sinkName"><shadow type="oh_audiosink_dropdown"
id="WvRdhqS%,j(,T?Q/4P{V"><field
name="sinks">enhancedjavasound</field></shadow></value><value
name="volume"><shadow type="oh_volumeslider"
id="A7,BttV#_{/U1boL`m@:"><field name="volume">50</field></shadow><block
type="variables_get" id="|U](Oadc*$J#0gyCtDlR"><field name="VAR"
id="zRN^)Q~m1=usGUkrp2*X">vol</field></block></value></block></next></block></next></block></xml>
type: application/javascript
script: >
var vol;
vol = 35;
if
(items.getItem('OG_Jalousieaktor_4_Jalousie_OG_Kind_Sud').numericState >
80) {
vol = 25;
}
actions.Audio.playSound('enhancedjavasound', 'doorbell.mp3', (vol/100));
type: script.ScriptAction
Du kannst einfach eine "leere" Rule anlegen, danach auf die Code-Anzeige wechseln und den gesamten yaml Code gegen den von mir geposteten Code austauschen. Einzige Voraussetzung ist, dass Blockly aktiv ist (das JavaScript Scripting Addon muss dazu installiert sein)
Der größte Teil des Codes ist die Blockly Definition, der eigentliche Code ist der Block nach
script: >
Der Code definiert eine lokale Variable vol und weist dieser den Wert 35 zu (das wäre die "laute" Klingel). Falls die Jalousie einen Status > 80 hat, wird vol auf 25 geändert.
Abschließend wird die Action playSound ausgeführt.
Achtung: Da ich kein Sonos habe, habe ich auch keine passende sink. Entsprechend musst Du das noch anpassen, d.h. nach dem Einfügen des Codes auf der Codeseite wechselst Du in die Design Ansicht und rufst den Action-Block auf. Dort solltest Du dann diese Ansicht angezeigt bekommen;
Screenshot 2024-11-17 003638.png
Und dort musst Du dann das Drop-down Menü der Audio sink aufklappen und Deine Sonos auswählen.
Ich gehe davon aus, dass ein Teil der Probleme evtl. damit zusammenhängt, dass Du zwei Rules für die gleiche Sache in Betrieb hast.
Das Abspielen des letzten Songs ist in sofern erklärbar, dass die Sonos ja tatsächlich einen gerade abgespielten Song fortsetzen soll, nachdem der Klingelsound vollständig abgespielt wurde. Das darf natürlich nur passieren, wenn die Sonos zum Zeitpunkt des Klingelns auch gerade etwas abgespielt hat,
Ob openHAB hier den Fehler macht oder das Problem bei Sonos liegt, vermag ich nicht einzuschätzen, wie gesagt, ich habe kein Sonos.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet