NEWS
[Gelöst] alten Samsung TV steuern.
-
ok, versuch mal so:
createState('javascript.0.medien.TV_unten', 0,{type: "number", role: "Volume %"}); on({id:'javascript.0.medien.TV_unten'}, function (obj){ for (var i = 0; i < obj.state.val; i++) { console.log (i); setStateDelayed("samsung.0.Volume.Volume Up"/*Volume.Volume Up*/, true, 50, false); } });
-
Schein "halbwegs" zu funktionieren.
Zumindest wenn ich im Objekt einn Wert eintrage, wird der TV angesteuert.
Allerdings nicht mit z.B. 10x.
Da reagiert der TV nur 2-3mal drauf. Das wird dann am TV liegen denke ich, da er vielleicht nicht so schnell reagiert.
Verzögerung hab ich testweise auch schon erhöht, bringt aber leider auch nix. Hab das mal testweise auf 1000 gestellt, wollte damit erreichen das jede Schleife 1sek lang ist. Wäre doch so richtig?
createState('javascript.0.medien.TV_unten_leiser', 0,{type: "number", role: "Volume %"}); on({id:'javascript.0.medien.TV_unten_leiser'}, function (obj){ for (var i = 0; i < obj.state.val; i++) { console.log (i); setStateDelayed("samsung.0.Volume.Volume Down"/*Volume.Volume Down*/, true, 1000, false); } });
Aber ich hab noch ein weiteres Problem.
Lauter bekomme ich den Fernseher ja mit "Erhöhe Fernseher um x%" Aber wenn ich jetzt sage "Verringere Fernseher um x%" oder "Verringere Lautstärke um x%" sagt Siri mir entweder es wird nichts wiedergegeben oder es gibt keine Geräte die die Helligkeit regeln?
Ich will ja Lautstärke regeln. Blöde Siri
Das Device im YAHKA hab ich als Switch angelegt. Muss hier etwas anderes gewählt werden?
-
ja das ist der Callback der dir nen strich durch die Rechnung macht
versuch mal so:
createState('javascript.0.medien.TV_unten_leiser', 0,{type: "number", role: "Volume %"}); on({id:'javascript.0.medien.TV_unten_leiser'}, function (obj){ var i=0; Intervall = setInterval(function () { console.log(i); setState("samsung.0.Volume.Volume Down",val=true,akt=true); i++; if (i==obj.state.val){ i=0; clearInterval(Intervall); } }, 500); });
-
Da reagiert er leider gar nicht drauf.
-
also bei mir läuft das ohne Probleme, ich habe zwar nicht deinen TV, aber wenn ich z.b. eine Lampe steuere blinkt diese so oft wie angegeben, Voraussetzung ist das der state als Button angelegt ist.
-
Klassischer JavaScript-Anfängerfehler:
for (var i = 0; i < obj.state.val; i++) { setStateDelayed("samsung.0.Volume.Volume Down"/*Volume.Volume Down*/, true, 1000, false); }
sorgt dafür, dass nach 1s der gleiche Wert mehrfach auf true gesetzt wird. Die Schleife pausiert nicht durch den Aufruf von setStateDelayed.
Korrekt wäre per setInterval (kann man abbrechen) oder so:
for (var i = 0; i < obj.state.val; i++) { setStateDelayed("samsung.0.Volume.Volume Down"/*Volume.Volume Down*/, true, 1000 * (i + 1), false); }
Das sorgt dafür, dass eine Reihe von Befehlen eingereiht werden, jeweils nach 1,2,3,4,… Sekunden.
Der Schlüssel hierfür ist die Berechnung des Timeouts 1000 * (i + 1)
-
Danke.
Made my day
Der Sir Befehl klingt zwar etwas holprig, aber es funktioniert. "Hey Siri Stelle Fernseher lauter x" und "Hey Siri Stelle Fernseher leiser x"
-
Ich wollte auch erst die Lautstärke vom Fernseher über Alexa Steuern. Habe auch einen Samsung. Hab es dann aber doch direkt mit dem Soundsystem gemacht. Vom Prinzip her ist das aber das gleiche. Ich kenne die aktuelle Lautstärke vom Soundsystem nicht und kann deshalb nur die Lautstärke per Sprachbefehl erhöhen oder reduzieren.
Habe es dann so gelöst mit Javascript:
on({id:'javascript.0.medien.Lautstärke_Soundsystem'}, function (obj){ var volumevalue = getState("javascript.0.medien.Lautstärke_Soundsystem").val; var oldvolumevalue = getState("javascript.0.medien.Lautstärke_Soundsystem_vorher").val; var diff = volumevalue - oldvolumevalue; console.log("gesetzte Lautstärke: " + diff); if (diff > 0) { //Lautstärke erhöhen console.log ("Lautstärke erhöhen"); // Maximale Lautstärkeerhöhung um 5 Schritte if (diff > 10) { diff = 10; } for (var i = 0; i < diff; i++) { console.log (i); setStateDelayed("harmony.0.Harmony Hub.Logitech Verstärker.VolumeUp", 1, 1000 * (i + 1), false); } setState("javascript.0.medien.Lautstärke_Soundsystem_vorher", volumevalue); } else if (diff < 0) { //Lautstärke verringern console.log ("Lautstärke verringern"); diff = diff * (-1); // Maximale Lautstärkeerhöhung um 5 Schritte if (diff > 10) { diff = 10; } for (var i = 0; i < diff; i++) { console.log (i); setStateDelayed("harmony.0.Harmony Hub.Logitech Verstärker.VolumeDown", 1, 1000 * (i + 1), false); } setState("javascript.0.medien.Lautstärke_Soundsystem_vorher", volumevalue); } }); // 40 entspricht 100% // 2,5% Lautstärkeerhöhung pro Tastendruck // Variablen: Min: -20 ; Max: +20 (entspricht 0-100% = 40 Schritte)
Dabei habe ich mir 2 Variablen im iobroker erstellt:
-
"Lautstärke_Soundsystem"
-
"Lautstärke_Soundsystem_vorher"
Die Grenzen der Variablen habe ich auf -20 und +20 begrenzt, da ich 40 Lautstärkestufen bis 100% habe. Da Alexa scheinbar nur Prozentangaben richtig setzt habe ich dass dann so machen müssen. Zu der Variable "Lautstärke_Soundsystem" habe ich dann ein Smart-Gerät "Lautstärke" im Cloud Adapter angelegt. So ändere ich die Lautstärke per Befehl "Alexa, erhöhe/reduziere Lautstärke um x%". Bei 5% wären das 2 Lautstärkestufen. Für eine Lautstärkestufe müsste ich theoretisch 2,5% sagen aber mit 2 Prozent funktioniert es auch. Die Variable nimmt dann zwar Gleitkommawerte an, aber es wird trotzdem nur einmal der Lautstärkebefehl an das Soundsystem gesendet. Mir war es halt wichtig, dass wenn ich Prozentwerte angebe, es auch wirklich so viel Prozent von der Lautstärke sind.
Gruß Maik
-
-
@maniac: wie hast Du den alten Samsung angebunden? Welchen Adapter hast Du dafür installiert?
-
@maniac: wie hast Du den alten Samsung angebunden? Welchen Adapter hast Du dafür installiert? `
Einfach den Samsung Adapter.
-
Hi @maniac bin gerade am basteln mit Siri, iobroker und Sonos.
Möchte Siri den Befehl geben: "Musik (Lautsärke) 10" bzw. "Musik lauter" etc.Nun meine Frage, wie bekommst du den Laustärkewert z.b. "10" von Siri in iobroker?
Bzw. welches Gerät benutzt du für die Spracheingabe?Vielen Dank
-
@fabalan sagte in [Gelöst] alten Samsung TV steuern.:
Hi @maniac bin gerade am basteln mit Siri, iobroker und Sonos.
Möchte Siri den Befehl geben: "Musik (Lautsärke) 10" bzw. "Musik lauter" etc.Nun meine Frage, wie bekommst du den Laustärkewert z.b. "10" von Siri in iobroker?
Bzw. welches Gerät benutzt du für die Spracheingabe?Vielen Dank
Ich hatte das damals mit dem Yahka Adapter gemacht. Habe das aber jetzt nicht mehr weiter verfolgt, da es für mich keinen Sinn mehr machte das per Sprache zu machen. Fernbedienung geht immer noch am schnellsten.