NEWS
Ausgabe Name des Senders
-
Wenn es um diesen Adapter geht: https://github.com/Lucky-ESA/ioBroker.e2-openwebif
Dieser Adapter ist nicht in den repositories enthalten und befindet sich offensichtlich im ALPHA Status. Am besten kontaktierst du bei Fragen direkt den Dev.
Von direkten Installation von GitHub - insbesondere auf produktiven Systemen - wird explizit abgeraten.
GitHub Versionen können sich jederzeit (auch kurzfristig) ändern und durchaus auch in sich inkonsistent und fehlerhaft sein. Versionsangaben von GitHub Installationen sind Schall und Rauch da die Versionsnummer zumindest bei Verwendung der standardmäßigen Umgebung erst im Zuge der Releaseerstellung geändert wird.
Auf explizite Aufforderung durch den Entwickler kann eine GitHub Installation zur Fehlereingrenzung oder zum Test neuer Funktionalität - unter Inkaufnahme des erhöhten Risikos - natürlich erfolgen.
Adapter die nur via GitHub oder npm (also NICHT aus einem der beiden Repositories) installierbar sind sind mit erhöhter Vorsicht zu betrachten. Hier sollte der Entwickler drum ersucht werden eine Aufnahme in die Repositories zu veranlassen indem z.B. ein Issue im Adapterrepository erstellt wird.
Dieser Adapter ist nicht in den repositories enthalten und befindet sich offensichtlich im ALPHA Status. Am besten kontaktierst du bei Fragen direkt den Dev.
Nimm doch direkt den Enigma-2 Adapter aus dem Repository der funktioniert bei meiner Gigablue UHD Quad 4K einwandfrei.
wie kann ich bei ,,,,Erstelle Text aus,,,,die ID dort definieren muss ich die geschweiften klammern dort setzten um die ID des Sendernamen auszugeben?
Nein, du nimmst den Baustein 'Erstelle Text aus' und dann noch den Baustein 'Text' und schreibst den Text den du haben möchtest in das Feld rein
-
Hallo liebe Community, da ich lange nicht hier war und auch nichts am iobroker machte, wollte ich mal wissen ob es realiesierbar ist.
Ich habe den Adapter e2-openwebif.0 installiert und auch die Daten meiner Gigablue UHD Trio 4K Pro eingetragen. Zeigt auch alles grün an, also arbeitet der Adapter sauber.
In den Objekten zeigen auch die Tuner daten alles an. Nund wollte ich per Blocklyscript es so bewerkstelligen das Alexa bei der Sprachausgabe den Sendernamen ansagt...Danke erst mal im vorraus..lg
-
Ich möchte ja kein eigenen Text. Ich würde den Datenpunkt gerne im Baustein Text das hier ausgeben,,,,,,enigma2.0.enigma2.CHANNEL,,,,,,
Habe den Anderen Adapter deinstalliert und Enigma2 genommen funktioniert wunderbar.
Ich möchte ja kein eigenen Text. Ich würde den Datenpunkt gerne im Baustein Text das hier ausgeben,,,,,,enigma2.0.enigma2.CHANNEL,,,,,,
Probiers mal hiermit, leg ein neues TYPE SCRIPT ( kein JavaScript) an und kopier das Script rein.
Dann mußt du nur noch ganz oben die .xxxxxx mit dem DP von deinem Echo ersetzten.TYPE SCRIPT
// ID-Definitionen (Bitte die Alexa-ID an deinen Echo anpassen!) const channelDP: string = 'enigma2.0.enigma2.CHANNEL'; 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 mal leer ist oder der Receiver ausgeschaltet wird if (!channelName || channelName === 'off' || channelName === '') { return; } // Der Text, den Alexa sprechen soll const speechText: string = `Du guckst jetzt ${channelName}`; // Befehl an Alexa senden (ack: false, damit der Adapter den Befehl ausführt) setState(alexaSpeakDP, speechText, false); log(`Alexa-Ansage ausgelöst: "${speechText}"`, 'info'); }); -
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

