NEWS
Ausgabe Name des Senders
-
Kann man das auch noch erweitern auf ,,,enigma2.0.enigma2.PROGRAMM,,,
Probier es hiermit:
// ID-Definitionen (Bitte die Alexa-ID an deinen Echo anpassen!) const channelDP: string = 'enigma2.0.enigma2.CHANNEL'; const programDP: string = 'enigma2.0.enigma2.PROGRAMM'; const alexaSpeakDP: string = 'alexa2.0.Echo-Devices.G0XXXXXXXXXXXXXX.Commands.speak'; // <-- Hier deine Echo-ID eintragen // Trigger bei Änderung des Sendernamens on({ id: channelDP, change: 'ne' }, (obj) => { const channelName: string = obj.state.val; // Falls der Datenpunkt leer ist oder der Receiver ausgeschaltet wird if (!channelName || channelName === 'off' || channelName === '') { return; } // Kurze Verzögerung abwarten, damit auch der PROGRAMM-Datenpunkt den neuen Wert hat setTimeout(() => { // Aktuelle Sendung auslesen const programState = getState(programDP); const programName: string = programState && programState.val ? programState.val.toString() : ''; let speechText: string = `Du guckst jetzt ${channelName}.`; // Wenn ein Sendungstitel vorhanden ist, diesen an den Text anhängen if (programName && programName !== 'off' && programName !== '') { speechText += ` Es läuft gerade: ${programName}`; } // Befehl an Alexa senden (ack: false) setState(alexaSpeakDP, speechText, false); log(`Alexa-Ansage ausgelöst: "${speechText}"`, 'info'); }, 500); // 500 Millisekunden Verzögerung });Da beim umschalten eine Verzögerung bei der Aktualisierung von 'Channel' und 'Programm' auftreten kann, ist eine Zeitverzögerung von 500ms eingebaut, wenn die nicht ausreicht, mußt du unten den Wert von 500 auf z.B. 700 erhöhen.
Wenn keine Programminformationen vorhanden sind sagt Alexa nur den Sendernamen an.
Deaktivier das andere Script bevor du das neue startest! Brauchst du ja noch nich löschen, falls mit dem neuen was nicht funktioniert. Wenn alles funktioniert, kannst du das andere Script löschen.
-
Der Code klappte wunderbar jetzt versuche ich das mit dem Picon zu bewerkstelligen.
Momentaner Stand:// Konfiguration: Passe die IP und ggf. die Instanz deines enigma2-Adapters an const boxIp = "XXX.XXX.XXX.XX"; // IP-Adresse deines Enigma2-Receivers const boxPort = "80"; // Port des OpenWebIF (Standard ist 80) const e2Instance = "enigma2.0.enigma2"; // Name deiner Enigma2-Instanz im ioBroker enigma2.0.enigma2.CHANNEL_SERVICEREFERENCE // Datenpunkt für die generierte URL definieren const targetState = "0_userdata.0.gigablue.picon_url"; createState(targetState, "", { name: "Aktuelle Picon URL", type: "string", role: "text" }); // Trigger auf die Servicereferenz des Enigma2-Adapters setzen on({id: `${e2Instance}.CHANNEL_SERVICEREFERENCE`, change: "ne"}, function (obj) { let sRef = obj.state.val; if (sRef && sRef.length > 0) { // Enigma2 Servicereferenz umwandeln (Doppelpunkte zu Unterstrichen) // Am Ende darf kein Doppelpunkt stehen, diesen wegschneiden, falls vorhanden if (sRef.endsWith(":")) { sRef = sRef.slice(0, -1); } let piconName = sRef.replace(/:/g, "_"); // Vollständige URL zusammensetzen let piconUrl = `http://${boxIp}:${boxPort}/picon/${piconName}.png`; // In den erstellten Datenpunkt schreiben setState(targetState, piconUrl, true); log(`Picon URL aktualisiert: ${piconUrl}`, "info"); } else { // Falls kein Sender aktiv ist oder kein Signal anliegt, leeren setState(targetState, "", true); } });Bei der Ausgabe im Log zeigt er mir die richtige URL an wo das Picon gespeichert ist, aber in der Ausgabe in 0_userdata.0.gigablue.picon_url zeigt er mir zwar an das :
http://XXX.XXX.XXX.XX/picon/1:0:1:2EF4:441:1:FFFF0000:0:0:0:.pngIch bekomme zum Teufel hinten den Doppelpunkt nicht weg. Hat da jemand ein Tip für mich.
-
Der Code klappte wunderbar jetzt versuche ich das mit dem Picon zu bewerkstelligen.
Momentaner Stand:// Konfiguration: Passe die IP und ggf. die Instanz deines enigma2-Adapters an const boxIp = "XXX.XXX.XXX.XX"; // IP-Adresse deines Enigma2-Receivers const boxPort = "80"; // Port des OpenWebIF (Standard ist 80) const e2Instance = "enigma2.0.enigma2"; // Name deiner Enigma2-Instanz im ioBroker enigma2.0.enigma2.CHANNEL_SERVICEREFERENCE // Datenpunkt für die generierte URL definieren const targetState = "0_userdata.0.gigablue.picon_url"; createState(targetState, "", { name: "Aktuelle Picon URL", type: "string", role: "text" }); // Trigger auf die Servicereferenz des Enigma2-Adapters setzen on({id: `${e2Instance}.CHANNEL_SERVICEREFERENCE`, change: "ne"}, function (obj) { let sRef = obj.state.val; if (sRef && sRef.length > 0) { // Enigma2 Servicereferenz umwandeln (Doppelpunkte zu Unterstrichen) // Am Ende darf kein Doppelpunkt stehen, diesen wegschneiden, falls vorhanden if (sRef.endsWith(":")) { sRef = sRef.slice(0, -1); } let piconName = sRef.replace(/:/g, "_"); // Vollständige URL zusammensetzen let piconUrl = `http://${boxIp}:${boxPort}/picon/${piconName}.png`; // In den erstellten Datenpunkt schreiben setState(targetState, piconUrl, true); log(`Picon URL aktualisiert: ${piconUrl}`, "info"); } else { // Falls kein Sender aktiv ist oder kein Signal anliegt, leeren setState(targetState, "", true); } });Bei der Ausgabe im Log zeigt er mir die richtige URL an wo das Picon gespeichert ist, aber in der Ausgabe in 0_userdata.0.gigablue.picon_url zeigt er mir zwar an das :
http://XXX.XXX.XXX.XX/picon/1:0:1:2EF4:441:1:FFFF0000:0:0:0:.pngIch bekomme zum Teufel hinten den Doppelpunkt nicht weg. Hat da jemand ein Tip für mich.
-
Ok.. gesehen.. ich denke ich würde das so lösen:
sRef = `${sRef}.png` sRef.replace(':.', '.').replace(/:/gm,'_')getestet habe ich das mit diesem Snippet auf jsfiddle.net:
const sRef = 'http://XXX.XXX.XXX.XX/picon/1:0:1:30:5:85:FFFF0000:0:0:0:.png' console.log(sRef.replace(':.', '.').replace(/:/gm,'_')) -
ja ich weiss habe den Code nur ein wenig abgeändert. jetzt zeigt auch alles an. ich baue mir da eine HTML Tabelle auf, deshalb fragte ich.
Und danke nochmal
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden

