NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[Frage] [V4.0 IP4] Sonos: Radiosender merken und nach Türgong fortsetzen

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
jockele
Reactions:
Beiträge: 187
Registriert: Mo Aug 13, 2018 8:40 pm
Wohnort: Steisslingen
Hat sich bedankt: 27 Mal
Danksagung erhalten: 40 Mal

[V4.0 IP4] Sonos: Radiosender merken und nach Türgong fortsetzen

#1

Beitrag von jockele »

Hallo zusammen,

ich bräuchte mal etwas Input bezüglich Logiken. Leider fehlt mir der richtige Einstieg welche Logikbausteine ich für die Umsetzung meiner Fragestellung benutzen soll, bzw. wie eine entsprechende Custom-Logik zu realisieren wäre.

Ausgangssituation:
Meine Sonos-Boxen spreche ich über https://github.com/jishi/node-sonos-http-api an. HAuptsächlich nutze ich die Boxen um Radiosender abzuspielen, jedoch wird auch der Türgong über einen entsprechenden Befehl abgespielt (KNX-GA triggert einen Befehl über die http-api Schnittstelle).

Problematik:
Wenn ein Radiosender aktiv ist und Musik läuft und der Türgong wird betätigt, wird der Türgong entsprechend abgespielt, danach ist dann aber Ruhe, d.h. der Radiostream wird nicht fortgesetzt.

Wunsch:
Eine Logik die im Falle einer aktiven Musikwiedergabe sich den Radiosender merkt und diesen nach Ablauf des Türgongs wieder aufnimmt mit der vorher eingestellten Lautstärke. Informationen über den Sender, Lautstärke usw. werden über ein state-Argument ausgelesen.

Was kann ich hier für Logik-Bausteine verwenden um mir entsprechend die Daten zu merken und dann wieder an die API zu übergeben?

Danke für jede Hilfe,

viele Grüße Jochen
Timberwolf Server 2500, ID:142 + PBM
VPN offen, Reboot nach Absprache

adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#2

Beitrag von adimaster »

Hallo Jochen,

bei mir läuft es anscheinend ähnlich wie bei Dir und auch ich stand vor der selben Herausforderung.
Über API und Logik am Wolf habe ich das bisher aus Zeitgründen noch nicht gelöst.

Ich arbeite hier aktuell noch mit OpenHAB ... da habe ich es wie folgt gelöst:

Code: Alles auswählen

rule "Bell Volumio"
when
	// überwacht "Klingel-Status"
	Item Bell changed
then
	if(Bell.state == ON && BellActive.state == ON){
		
		// prüft, ob eben Musik abgespielt wird
		if(VolumioAmpState.state == PLAY){
			// wenn ja --> Flag setzen, dass Radio abgespielt wird
			bRadioActive = true
			// aktuelle Lautstärke speichern
			iLastVolume = (VolumioAmpVolume.state as DecimalType).intValue
		}
		
		// set pause
		sendCommand(VolumioAmpState, PAUSE)
		Thread::sleep(100)
		
		// deactivate repetition
		sendCommand(VolumioAmpRepeat, OFF)
		Thread::sleep(100)
		
		// increase volume
		// Lautstärke anpassen auf Ansagen/Klingel etc. 
		sendCommand(VolumioAmpVolume, iAnnouncementVolume)
		Thread::sleep(100)
		
		// play Bell
		sendCommand(VolumioAmpPlayFile, sBell)
		Thread::sleep(6000)

		// decrease volume
		// Lautstärke wieder zurückstellen
		sendCommand(VolumioAmpVolume, iStandardVolume)
		
		// wenn Radio an war --> letzte Lautstärke einstelln und Radio wieder anschalten
		if(bRadioActive == true){
			bRadioActive = false
			sendCommand(VolumioAmpVolume, iLastVolume)
			sendCommand(VolumioAmpPlayURI, sRadioStation)
		}
	}
Vielleicht gibt Dir das zumindest ein paar Anhaltspunkte/Ideen.
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1171 Mal
Danksagung erhalten: 2076 Mal

#3

Beitrag von Robert_Mini »

Hallo Jochen!
In knapp:
Klingel Eingang triggered Monoflop
Eingang 2-4 (Option u) für Lautstärke, Sender, etc. werden mit latch zwischengespeichert, wenn pos. Flanke beim Klingel Eingang auftritt
Ablauf Monoflop löst ein SendExplicit aus mit Eingang 2-4 auf Ausgang 1-3 => lösen wiederum http-Send aus.

Was noch fehlt: ist die Klingel mit 1-0 am KNX oder nur 1, dann bräuchte das noch eine kleine Anpassung.

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
jockele
Reactions:
Beiträge: 187
Registriert: Mo Aug 13, 2018 8:40 pm
Wohnort: Steisslingen
Hat sich bedankt: 27 Mal
Danksagung erhalten: 40 Mal

#4

Beitrag von jockele »

Danke Euch schon mal für die Antworten, denke so kann ich mal einsteigen und mich langsam durcharbeiten.
Werde ich mal Stück für Stück angehen und testen.

Die Klingel ist über einen Binäreingang am KNX und sendet nur die 1. Was bedeutet das an Anpassung?
Oder wäre die 1-0 einfacher, kann ich sonst ja auch umstellen,

viele Grüße Jochen
Timberwolf Server 2500, ID:142 + PBM
VPN offen, Reboot nach Absprache

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1171 Mal
Danksagung erhalten: 2076 Mal

#5

Beitrag von Robert_Mini »

Macht keinen großen Unterschied:
Klingel Eingang triggered Monoflop (Option 1, pegelgesteuert mit retrigger)
Eingang 2-4 (Option u) für Lautstärke, Sender, etc. werden mit latch zwischengespeichert (pos Flanke), wenn pos. Flanke beim Status Timer auftritt (Status statt Eingang)
Ablauf Monoflop löst ein SendExplicit aus mit Eingang 2-4 auf Ausgang 1-3 => lösen wiederum http-Send aus.

Lg
Robert
Zuletzt geändert von Robert_Mini am Di Dez 12, 2023 9:58 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
jockele
Reactions:
Beiträge: 187
Registriert: Mo Aug 13, 2018 8:40 pm
Wohnort: Steisslingen
Hat sich bedankt: 27 Mal
Danksagung erhalten: 40 Mal

#6

Beitrag von jockele »

noch eine Frage, nach meinem bisherigen Edomi-Verständnis müsste noch ein UND ganz an den Anfang.
Musik läuft aktuell und Klingel wird betätigt.
Oder sehe ich da was falsch?
Timberwolf Server 2500, ID:142 + PBM
VPN offen, Reboot nach Absprache

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1171 Mal
Danksagung erhalten: 2076 Mal

#7

Beitrag von Robert_Mini »

Ja, für das Monoflop vorher ein UND.

Lg Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
jockele
Reactions:
Beiträge: 187
Registriert: Mo Aug 13, 2018 8:40 pm
Wohnort: Steisslingen
Hat sich bedankt: 27 Mal
Danksagung erhalten: 40 Mal

#8

Beitrag von jockele »

Hallo zusammen,

nach längerem rumprobieren scheitere ich leider noch an der Aufgabe, die genauen Abläufe haben sich mir noch nicht wirklich erschlossen.
Aktuell scheitere ich an der zeitverzögerten Ausgabe nach Ablauf des Monoflops auf den sendexplicit.
Kann mir vielleicht einer der Experten auf die Sprünge helfen wo der Fehler genau liegt?

Code: Alles auswählen

/**
 * Diese Logik führt den vor einem Türgong ausgelösten Stream fort
 *
 * 
 */

{
    "Level":[
        ["$trigger_KNX","bool",false],
        ["$state","bool",false],
        ["$trigger_logic","bool",false],
        ["$resend","bool",false],
        ["$delay","integer",5],
        ["$stream_in","string","123"],
        ["$stream_out","string","test"],
        ["$volume_in","integer",5],
        ["$volume_out","integer",10]
    ],
    "Module":[
        ["And",["$trigger_KNX","$state"],"$trigger_logic"],
        ["Monoflop","$trigger_logic","-$trigger_logic","$resend",5,1],
        ["Latch","$stream_in","$stream_out","$trigger_logic",0],
        ["Latch","$volume_in","$volume_out","$trigger_logic",0],
        ["SendExplicit","$resend","$stream_out",2],
        ["SendExplicit","$resend","$volume_out",2]
    ],
    "Input":[
        ["Status","Status play/pause","$state","c"],
        ["Trigger_Tuergong","Triggert_die_Logik","$trigger_KNX","a"],
        ["delay","Verzoegerung fuer Wiederaufnahme","$delay","c"],
        ["Sender","aktueller_Sender","$stream_in","u"],
        ["Lautstaerke","aktuelle_Lautstaerke","$volume_in","u"]
    ],
    "Output":[
        ["stream_out","Stream vor Tuergong","$stream_out","x"],
        ["volume_out","Lautstaerke vor Tuergong","$volume_out","x"]
    ]
}
Viele Grüße Jochen
Timberwolf Server 2500, ID:142 + PBM
VPN offen, Reboot nach Absprache

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1171 Mal
Danksagung erhalten: 2076 Mal

#9

Beitrag von Robert_Mini »

Hallo Jochen!

Hab erst am Abend Zeit zum Testen, aber auf den ersten Blick alles richtig, auch das SendExplicit bei fallender Flanke des Timers.
Ich vermute, dass es nur aufgrund eines Formalfehlers nicht läuft => du hast beim Monoflop die Verzögerung als Zahl (5) eingegeben. Das klappt so nicht, du musst die Verzögerung als eigene Variable übergeben zB $delay und dieser in der Definition den default 5 zuweisen oder als Input veränderbar machen...

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
jockele
Reactions:
Beiträge: 187
Registriert: Mo Aug 13, 2018 8:40 pm
Wohnort: Steisslingen
Hat sich bedankt: 27 Mal
Danksagung erhalten: 40 Mal

#10

Beitrag von jockele »

Hallo Robert,

habe nochmal weiter probiert, leider wieder ohne Erfolg. Hast Du evtl. mal kurz die Zeit drüber zu schauen?
Aktueller Stand sieht folgendermaßen aus:

Code: Alles auswählen

/**
 * Diese Logik führt den vor einem Türgong ausgelösten Stream fort
 *
 * 
 */

{
    "Level":[
        ["$trigger_KNX","bool",false],
        ["$state","bool",false],
        ["$trigger_logic","bool",false],
        ["$resend","bool",false],
        ["$delay","integer",5],
        ["$stream_in","string","123"],
        ["$stream_out","string","test"],
        ["$volume_in","integer",5],
        ["$volume_out","integer",10]
    ],
    "Module":[
        ["And",["$trigger_KNX","$state"],"$trigger_logic"],
        ["Monoflop","$trigger_logic","-$trigger_logic","$resend","$delay",1],
        ["Latch","$stream_in","$stream_out","$trigger_logic",0],
        ["Latch","$volume_in","$volume_out","$trigger_logic",0],
        ["SendExplicit","$resend","$stream_out",2],
        ["SendExplicit","$resend","$volume_out",2]
    ],
    "Input":[
        ["Status","Status play/pause","$state","c"],
        ["Trigger_Tuergong","Triggert_die_Logik","$trigger_KNX","a"],
        ["delay","Verzoegerung fuer Wiederaufnahme","$delay","c"],
        ["Sender","aktueller_Sender","$stream_in","u"],
        ["Lautstaerke","aktuelle_Lautstaerke","$volume_in","u"]
    ],
    "Output":[
        ["stream_out","Stream vor Tuergong","$stream_out","x"],
        ["volume_out","Lautstaerke vor Tuergong","$volume_out","x"]
    ]
}
Viele Grüße Jochen
Timberwolf Server 2500, ID:142 + PBM
VPN offen, Reboot nach Absprache
Antworten

Zurück zu „Logikengine & Logik-Editor“