Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. freak1051

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    F
    • Profile
    • Following 1
    • Followers 0
    • Topics 16
    • Posts 120
    • Best 2
    • Groups 3

    freak1051

    @freak1051

    Starter

    2
    Reputation
    40
    Profile views
    120
    Posts
    0
    Followers
    1
    Following
    Joined Last Online

    freak1051 Follow
    Developer Pro Starter

    Best posts made by freak1051

    • RE: Test Adapter Philips-TV v0.2.x

      @Mic

      Perfekt. Das werd ich morgen dann mal in Angriff nehmen. Vielen dank, für die Super Anleitung.

      Ich denke, ich werd das ganze nebenbei Screenshotten, oder vielleicht Sogar aufnehmen, und gerne dir/der Allgemeinheit zur Verfügung stellen.

      Zur Debian Instnaz: Ist es egal Welche Distri? Habe glaube ich Sketch eh als iso da. Oder sollte sie Aktueller sein?

      =================EDIT/NACHTRAG===========================

      Was mir bzgl. dem ausgeschaltetem TV aufgefallen ist, was du evtl auch einbauen könntest:

      Ich habe bisher die Philips eigene Ferbedienungs-App für Android genutzt. Ist der TV ausgeschaltet, erkennt die App den TV auch nicht. Mit einem Wake On Lan kann man aber den TV soweit aufwecken, dass die Fernbedienungs-App den TV erkennt und ich den TV einschalten kann. Werde das evtl versuchen zu testen/einzubauen und dir bescheid geben

      posted in Tester
      F
      freak1051
    • [Tester gesucht] Wake on Lan (WOL) für Philips TV
      Aktuelle Test Version iobroker.philips-tv-script (fork)
      Veröffentlichungsdatum 12.2019
      Github Link https://github.com/Mic-M/iobroker.philips-tv-script ( Orgnialscript)

      Hallo Zusammen,

      ich habe mich etwas mit dem Phillips-TV-Adapter, bzw. besser gesagt mit dem Script von @Mic auseinander gesetzt. Das Originalscript ist oben im Link zu finden.

      Ich habe mich etwas im bereich der TV-Anschaltung mittel WOL (Wake on Lan ) versucht. Ich versuche Schritt für Schritt, nachvollziehbar, zu erläutern, wie der Versuchsaufbau ist:

      1. Vorbereitungen (PC):

      Zu erst ist es ratsam ein "Packet-Sniffer" auf seinem PC zu installieren, damit man Kontrollieren kann, ob ioBroker überhaupt die sogenannten magic packets versendet.

      Hier empfehle ich Wireshark. Ist das Tool installiert kann man es gerne mal ausführen. Hier bitte die richtige Netzwerkschnittstelle Auswählen. (Sitzt man am Laptop und ist mit Wlan Verbunden sieht man natürlich auf der Lan-Schnittstelle kein Datenverkehr).

      Danach sollte das Bild etwas so Aussehen:
      1.png

      Wie in dem Grünen Feld zu sehen ist, einfach mal Wol eigeben und "Entern". Dann ist der Filer so eingestellt, dass Wireshark nur nach Wake On Lan-Paketen sucht, bzw sie anzeigt.

      ZUSATZINFO: Der TV benamst das Wecken über Wlan WAKE ON WLAN. Wake on Lan und Wake on Wlan ist das gleiche, da beide Protokolle und Funktionen auf dem Ethernet-Standard basieren. Nur das Übertragungsmedium ändert sich. Kurz gesagt Wake on Lan und Wake on WLan ist identisch!

      ============================================================================================

      1. Vorbereitungen TV:

      Am TV muss man die Funktion Wake on Wlan Aktivieren. Hier zu in den Netzwerkeinstellung die Funktion aktivieren. Damit man auch über Wlan wecken kann, muss man sein TV natürlich auch ins Wlan lassen. Also TV mit dem Wlan Verbinden (SSID + Passwort).
      Der TV wird erstmals nur den Wlan-Adapter nutzen, was für Straming nicht optimal ist, aber nach einem Standby - Ein - Übergang merkt er dass die Lan-Schnittstelle die bessere Wahl ist.

      In den Netzwerk-Einstellungen der TV´s gibt es noch eine Übersichtsseite. Hier bitte die IP-Adressen BEIDER Adapter und Mac-Adressen des Wlan-Adapters notieren. Wer sein Netzwerk kennt, kann dies auch mit der Firtzbox oder Tools wie "Advanced IP Scanner" machen. Wichtig ist die Wlan-MAC, da Magic-Packet´s MAC-Basierend sind.

      ==================================================================================================

      1. Scripte

      Falls das ihr noch keinen Benutzernamen/Passwort vom TV zugewisen bekommen habt, bitte nach dieser Anleitung vorgehen.

      Falls ihr das "Standart-Script" von Mic in Benutzung habt, dieses bitte vorläufig deaktivieren.

      Nun das Modifizierte Script einfügen:

      /*******************************************************************************
      * ---------------------------
      * Philips TV Script for ioBroker
      * ---------------------------
      *
      * Da der Philips-TV-Adapter noch nicht wie gewünscht funktioniert, habe ich dieses
      * Script geschrieben, um Philips-TVs zu steuern.
      *
      * ----------------------------------------------------
      * Aktuelle Version:    https://github.com/Mic-M/iobroker.philips-tv-script
      * Support:             https://forum.iobroker.net/topic/8791/aufruf-philips-tv-v0-1-0-testen
      * ----------------------------------------------------
      * Resources:
      *  - ioBroker Philips TV Adapter: https://forum.iobroker.net/topic/8791/aufruf-philips-tv-v0-1-0-testen
      *  - Many thanks to Evgeny Slavnov for the unofficial Philips TV API Reference: https://github.com/eslavnov/pylips/wiki
      *  - Python Script with MQTT support: https://github.com/eslavnov/pylips
      *  - Some info: https://community.openhab.org/t/philips-tv-2016-binding/64579/61
      * ----------------------------------------------------
      * Change Log:
      *  0.6  Mic-M * Added Commands Ambilight Hue On/Off - thanks to BeautyBoyBob
      *  0.5  Mic-M * Initial release on Github
      *******************************************************************************/
      
      
      /*******************************************************************************
      * Settings
      *******************************************************************************/
      // Pfad, unter dem die Objekte angelegt werden.
      const STATE_PATH = 'javascript.0.PhilipsTV-Script.';
      
      // Generate User/Password: see https://github.com/nstrelow/ha_philips_2016
      const PHILIPS_USER = 'USERNANE';
      const PHILIPS_PASS = 'PASSWORD';
      
      // URL, change IP address accordingly (and you may also need to change port, see for example https://github.com/eslavnov/pylips)
      const PHILIPS_URL = 'https://IP_LAN:1926/6/';
      
      // Logging
      const LOG_INFO = true;
      const LOG_DEBUG = true;
      
      /**
      * Falls Philips-TV für mehrere Minuten im Standby ist, ist dieser nicht mehr per PHILIPS_URL erreichbar.
      * Dann lässt dieser sich nicht per Script einschalten. Daher verwenden wir ein separates Gerät,
      * um den TV einzuschalten. Bei mir: Logitech Harmony
      */
      // Auf false setzen, wenn man kein Gerät hat, um den Philips zu schalten. Dann werden die weiteren 2 Settings nicht weiter beachtet.
      const CONTROL_DEVICE_USE = true;
      // State zum Gerät, das den TV ein/aus schaltet
      const CONTROL_DEVICE_STATE = "javascript.0.PhilipsTV-Script.WakeOnLan";
      // Was in den Datenpunkt zum einschalten gesetzt werden muss. Bei Harmony ist dies ein Toggle, es wird 1 erwartet.
      const CONTROL_DEVICE_CMD_ON = 1;
      
      
      /*******************************************************************************
      * Expert Settings
      *******************************************************************************/
      
      // Hier definieren wir die einzelnen Post Commands. 
      let pCommands = [];
      //        0.Command Name                       1.Path              2. curl Command      
      pCommands['Cmd: Ambilight Hue On'] = ['menuitems/settings/update',   '{"values":[{"value":{"Nodeid":2131230774,"Controllable":"true","Available":"true","data":{"value":"true"}}}]}'];  
      pCommands['Cmd: Ambilight Hue Off'] = ['menuitems/settings/update',   '{"values":[{"value":{"Nodeid":2131230774,"Controllable":"true","Available":"true","data":{"value":"false"}}}]}'];  
      pCommands['Cmd: Ambilight Off']             = ['ambilight/power',   '{"power":"Off"}'];
      pCommands['Cmd: Ambilight On']              = ['ambilight/power',   '{"power":"On"}'];
      pCommands['Cmd: Ambilight On Video Standard'] = ['ambilight/currentconfiguration',   '{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"STANDARD"}'];
      pCommands['Cmd: Ambilight On Video Immersive'] = ['ambilight/currentconfiguration',   '{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"IMMERSIVE"}'];
      pCommands['Cmd: Ambilight On Video Natural'] = ['ambilight/currentconfiguration',   '{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"NATURAL"}'];
      pCommands['Cmd: Ambilight On Video Vivid'] = ['ambilight/currentconfiguration',   '{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"VIVID"}'];
      pCommands['Cmd: Ambilight On Video Game'] = ['ambilight/currentconfiguration',   '{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"GAME"}'];
      pCommands['Cmd: Ambilight On Video Comfort'] = ['ambilight/currentconfiguration',   '{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"COMFORT"}'];
      pCommands['Cmd: Ambilight On Video Relax'] = ['ambilight/currentconfiguration',   '{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"RELAX"}'];
      pCommands['Launch: Amazon Prime Video'] = ['activities/launch',   '{"id":"com.amazon.amazonvideo.livingroom","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.amazon.amazonvideo.livingroom }","component":{"packageName":"com.amazon.amazonvideo.livingroom","className":"com.amazon.ignition.IgnitionActivity"}},"label":"Prime Video"}'];
      pCommands['Launch: Kodi'] = ['activities/launch',   '{"id":"org.xbmc.kodi","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=org.xbmc.kodi }","component":{"packageName":"org.xbmc.kodi","className":"org.xbmc.kodi.Splash"}},"label":"Kodi"}'];
      pCommands['Launch: Netflix'] = ['activities/launch',   '{"id":"com.netflix.ninja","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.netflix.ninja }","component":{"packageName":"com.netflix.ninja","className":"com.netflix.ninja.MainActivity"}},"label":"Netflix"}'];
      pCommands['Launch: YouTube'] = ['activities/launch',   '{"id":"com.google.android.apps.youtube.tv.activity.ShellActivity-com.google.android.youtube.tv","order":0,"intent":{"action":"Intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.google.android.youtube.tv cmp=com.google.android.youtube.tv/com.google.android.apps.youtube.tv.activity.ShellActivity }","component":{"packageName":"com.google.android.youtube.tv","className":"com.google.android.apps.youtube.tv.activity.ShellActivity"}},"label":"YouTube"}'];
      pCommands['Key: Adjust']  = ['input/key',   '{"key":"Adjust"}'];
      pCommands['Key: AmbilightOnOff']  = ['input/key',   '{"key":"AmbilightOnOff"}'];
      pCommands['Key: Back']  = ['input/key',   '{"key":"Back"}'];
      pCommands['Key: BlueColour']  = ['input/key',   '{"key":"BlueColour"}'];
      pCommands['Key: ChannelStepDown']  = ['input/key',   '{"key":"ChannelStepDown"}'];
      pCommands['Key: ChannelStepUp']  = ['input/key',   '{"key":"ChannelStepUp"}'];
      pCommands['Key: Confirm']  = ['input/key',   '{"key":"Confirm"}'];
      pCommands['Key: CursorDown']  = ['input/key',   '{"key":"CursorDown"}'];
      pCommands['Key: CursorLeft']  = ['input/key',   '{"key":"CursorLeft"}'];
      pCommands['Key: CursorRight']  = ['input/key',   '{"key":"CursorRight"}'];
      pCommands['Key: CursorUp']  = ['input/key',   '{"key":"CursorUp"}'];
      pCommands['Key: Digit0']  = ['input/key',   '{"key":"Digit0"}'];
      pCommands['Key: Digit1']  = ['input/key',   '{"key":"Digit1"}'];
      pCommands['Key: Digit2']  = ['input/key',   '{"key":"Digit2"}'];
      pCommands['Key: Digit3']  = ['input/key',   '{"key":"Digit3"}'];
      pCommands['Key: Digit4']  = ['input/key',   '{"key":"Digit4"}'];
      pCommands['Key: Digit5']  = ['input/key',   '{"key":"Digit5"}'];
      pCommands['Key: Digit6']  = ['input/key',   '{"key":"Digit6"}'];
      pCommands['Key: Digit7']  = ['input/key',   '{"key":"Digit7"}'];
      pCommands['Key: Digit8']  = ['input/key',   '{"key":"Digit8"}'];
      pCommands['Key: Digit9']  = ['input/key',   '{"key":"Digit9"}'];
      pCommands['Key: Dot']  = ['input/key',   '{"key":"Dot"}'];
      pCommands['Key: FastForward']  = ['input/key',   '{"key":"FastForward"}'];
      pCommands['Key: Find']  = ['input/key',   '{"key":"Find"}'];
      pCommands['Key: GreenColour']  = ['input/key',   '{"key":"GreenColour"}'];
      pCommands['Key: Home']  = ['input/key',   '{"key":"Home"}'];
      pCommands['Key: Info']  = ['input/key',   '{"key":"Info"}'];
      pCommands['Key: Mute']  = ['input/key',   '{"key":"Mute"}'];
      pCommands['Key: Next']  = ['input/key',   '{"key":"Next"}'];
      pCommands['Key: Online']  = ['input/key',   '{"key":"Online"}'];
      pCommands['Key: Options']  = ['input/key',   '{"key":"Options"}'];
      pCommands['Key: Pause']  = ['input/key',   '{"key":"Pause"}'];
      pCommands['Key: Play']  = ['input/key',   '{"key":"Play"}'];
      pCommands['Key: PlayPause']  = ['input/key',   '{"key":"PlayPause"}'];
      pCommands['Key: Previous']  = ['input/key',   '{"key":"Previous"}'];
      pCommands['Key: Record']  = ['input/key',   '{"key":"Record"}'];
      pCommands['Key: RedColour']  = ['input/key',   '{"key":"RedColour"}'];
      pCommands['Key: Rewind']  = ['input/key',   '{"key":"Rewind"}'];
      pCommands['Key: Source']  = ['input/key',   '{"key":"Source"}'];
      pCommands['Key: Standby']  = ['input/key',   '{"key":"Standby"}'];
      pCommands['Key: Stop']  = ['input/key',   '{"key":"Stop"}'];
      pCommands['Key: Subtitle']  = ['input/key',   '{"key":"Subtitle"}'];
      pCommands['Key: Teletext']  = ['input/key',   '{"key":"Teletext"}'];
      pCommands['Key: Viewmode']  = ['input/key',   '{"key":"Viewmode"}'];
      pCommands['Key: VolumeDown']  = ['input/key',   '{"key":"VolumeDown"}'];
      pCommands['Key: VolumeUp']  = ['input/key',   '{"key":"VolumeUp"}'];
      pCommands['Key: WatchTV']  = ['input/key',   '{"key":"WatchTV"}'];
      pCommands['Key: YellowColour']  = ['input/key',   '{"key":"YellowColour"}'];
      
      
      
      /***************************************************************************************************************
      ******************************* Ab hier nichts mehr ändern / Stop editing here! *******************************
      ***************************************************************************************************************/
      
      
      /*******************************************************************************
      * Initial Function
      *******************************************************************************/
      init();
      function init() {
         
         // 1. Create states
         createScriptStates();
      
         // 2. Subscriptions
         setTimeout(subscribeStates, 2000);
      
      }
      
      /**
      * Subscribe to States.
      */
      function subscribeStates() {
         // Command pull-down menu state
         on({id: STATE_PATH + 'Command', change:'any'}, function (obj) {
             doPostCommand(obj.state.val);
         });
      
         // TV on/off buttons
         on({id: STATE_PATH + 'TvOn', val:true}, function (obj) {
            powerPhilipsTv(true);
         });  
         on({id: STATE_PATH + 'TvOff', val:true}, function (obj) {
            powerPhilipsTv(false);
         });  
      
      }
      
      
      
      /**
      * Setzt den entsprechenden Befehl ab.
      * @param {string} id   Command Name von pCommands
      */
      function doPostCommand(id) {
         if (id in pCommands) { // Check if Key exists and typed correctly - https://stackoverflow.com/questions/1098040/checking-if-a-key-exists-in-a-javascript-object
             var exec = require('child_process').exec;
             let postArgs = "-X POST --digest --insecure -u " + PHILIPS_USER + ":" + PHILIPS_PASS + " -d '" + pCommands[id][1] + "' " + PHILIPS_URL + pCommands[id][0];
             exec('curl ' + postArgs, function (error, stdout, stderr) {
                 if (LOG_DEBUG) log('stdout: ' + stdout);
                 if (LOG_DEBUG) log('stderr: ' + stderr);
                 if (error !== null) {
                     log('exec error: ' + error);
                 }
             });
         } else if(id == '') {
             // do nothing, will be empty if script is initally started or user did not select value
         } else {
             log('Wrong command provided to Philips TV: [' + id + ']', 'warn');
         }
      }
      
      /**
      *  Philips TV ein- und ausschalten.
      *  @param {boolean}  pwrState   true zum Einschalten, false zum Ausschalten.
      */
      function powerPhilipsTv(pwrState) {
         // We need to get the GET command to get the TV's powerstate
         let exec = require('child_process').exec;
         let args = "-X GET --digest --insecure -u " + PHILIPS_USER + ":" + PHILIPS_PASS + " " + PHILIPS_URL + "powerstate";
         exec('curl ' + args, function (error, stdout, stderr) {
             if (error) {
      
                 // TV is not reachable.
                 
                 if (LOG_DEBUG) log('stderr: ' + stderr, 'warn');
      
                 if(pwrState) {
                     //TV shall be turned on.
      
                     // Since it is not reachable, we assume it is off.
                     // Therefore we turn it on through external device
                     if (CONTROL_DEVICE_USE) {
                         setState(CONTROL_DEVICE_STATE, CONTROL_DEVICE_CMD_ON);
                         //setState(CONTROL_DEVICE_STATE, CONTROL_DEVICE_CMD_ON);
                         //setState(CONTROL_DEVICE_STATE, CONTROL_DEVICE_CMD_ON);
                         if (LOG_INFO) log('Execute turning TV on: TV is in deep sleep, turning it on now...')
                     } else {
                         if (LOG_INFO) log('Execute turning TV on: TV is off and in deep sleep, no chance to turn it on.', 'warn');
                     }
      
                 } else {
                     // TV shall be turned off.
                     // Since it is not reachable, we assume it is off already.
                     // So we do nothing
                     if (LOG_INFO) log('Execute turning TV off: TV is already turned off and in deep sleep.')
                 }
      
             } else {
      
                 // TV is reachable.
                 
                 // What is the TV's status?
                 let powerStateStr = stdout;
                 powerStateStr = powerStateStr.replace(/powerstate/gi, ''); // remove term 'powerstate'
                 powerStateStr = powerStateStr.replace(/([^a-z]+)/gi, ''); // just keep a-z
                 if (LOG_INFO) log('We have connection to the TV. Power State: ' + powerStateStr);
      
                 if(pwrState) {
                     //TV shall be turned on.
                     if ( powerStateStr === 'Standby') {
                         // TV is in Standby, so let's turn it on
                         if (CONTROL_DEVICE_USE) {
                             // Although TV is reachable, we use the external device, as it might be that it is no longer
                             // reachable in the meantime, as POST command can take a few (m)seconds
                             setState(CONTROL_DEVICE_STATE, CONTROL_DEVICE_CMD_ON);
                             //setState(CONTROL_DEVICE_STATE, CONTROL_DEVICE_CMD_ON);
                             //setState(CONTROL_DEVICE_STATE, CONTROL_DEVICE_CMD_ON);
                         } else {
                             doPostCommand('Key: Home');
                         }
                         if (LOG_INFO) log('Execute turning TV on: turning it on now...')
                     } else {
                         // Nothing, since TV is not in Standby.
                         if (LOG_INFO) log('Execute turning TV on: TV is already turned on, so no action.')
                     }
      
                 } else {
                     // TV shall be turned off.
                     if ( powerStateStr === 'Standby') {
                         // TV is in Standby, so we do nothing else.
                         if (LOG_INFO) log('Execute turning TV off: TV is already in Standby, so no action.')
                     } else {
                         // TV is not in Standby, so turn off.
                         doPostCommand('Key: Standby');
                         if (LOG_INFO) log('Execute turning TV off: turning it off now...')
                     }                
                 }
             }
         });
      }
      
      
      function createScriptStates() {
      
         /**
          *  Command state Drop-down 
          */
         // create drop-down list
         let dropdown = '';
         for (let lpEntry of Object.keys(pCommands)) {   // 'special' loop here to get the keys
             dropdown += '"' + lpEntry + '":"' + lpEntry + '",'; // fill JSON string
         }
         dropdown = dropdown.substr(0, dropdown.length-1); // remove last comma ","
         dropdown = '{' + dropdown + '}'; // finalize JSON string
         let dropdownJSON = JSON.parse(dropdown); // convert to JSON
      
         // Create state. Force is set to true, so we will always update the states if e.g. configuration in this script changed.
         createState(STATE_PATH + 'Command', '', true, {'name':'Send Command to Philips TV', 'type':'string', 'read':false, 'write':true, 'role':'value', 'states': dropdownJSON});
      
         /**
          *  TV on/off states
          */
         createState(STATE_PATH + 'TvOn',  {'name':'Turn TV On',  'type':'boolean', 'read':false, 'write':true, 'role':'button', 'def':false });
         createState(STATE_PATH + 'TvOff', {'name':'Turn TV Off', 'type':'boolean', 'read':false, 'write':true, 'role':'button', 'def':false });
      
      }
      

      Folgende Änderungen wurden Druchgeführt:

      Zeile 50: Austausch von Harmony-Switch gegen WOL-Switch ( WOL-Switch wird in anderem Script automatisch generiert)

      Zeile 211-213: Hier wurde Ursprünglich der Harmony-Switch abgesetzt. Nun ist es der WOL-Switch. Ich habe den Aufruf des Switches mehrfach drin, da es hier auch etwas auf die Netzwerkgröße, Traffic und Topologie ankommt.

      Zeile 243 - 245: Selbiges wie Zeile 211 ff. Je nach netzwerkgröße die "//" entfernen.

      Das nachfolgende Script gibt Standardmäßig 3 Magic-Pakets aus. In meinem Netzwerk hat dies Ausgereicht. Wenn ihr ein kommentar ("//") Wegmacht, werden somit 2 x 3 = 6 Pakete Versendet. Hier einfach etwas Testen. In meinem Fall liegt überall Cat 7e, Gigabit-Ethernet, und direkt neben dem TV ist ein Access Point.

      Das nächste Script ist das eigentliche Wake on Lan Skript:

      createState("javascript.0.PhilipsTV-Script.WakeOnLan",  {'name':'WakeOnWlan',  'type':'boolean', 'read':false, 'write':true, 'role':'button', 'def':false });
      var wol = require('wake_on_lan');                   // Lädt von ioBroker die das nötige Paket
      var myPC1 = "MAC_WLAN_ADAPTER";                    // MAC definieren
      
      // Ab hier automatisch
      
      
      on({id: "javascript.0.PhilipsTV-Script.WakeOnLan", change: 'any'}, function (obj) 
         {
             wol.wake(myPC1);
             log("Script WOL - TV1 aufgeweckt", "info");
         }
      
      );
      

      Hier muss evtl. Das nötige Paket händisch im JavaScript Adapter eingefügt werden. War zumindest bei mir so.

      Wenn das Script eingefügt ist und gestartet kann man händisch schon mal den Switch aktivieren und im Wireshark mal schauen, ob denn WOL-Pakete durchs Netzwerk rauschen. Hierbei nicht Wundern. Die pakete werden Als Broadcast an die IP/Subnet 255.255.255.255 gesendet. Das ist alles normal. Wer sich hierfür Interessiert, einfach mal bisschen Nach Netzwerktechnik, Broadcastadresse/Netzaaddresse googlen.

      Damit ich das Ganze per Alexa Ansprechen kann, habe ich noch ein Blockly dazu gebastelt:

      <block xmlns="http://www.w3.org/1999/xhtml" type="on" id="#CQ,fBN.Dq}!3LrY9wiG" x="-387.27999999999986" y="-537.272">
       <field name="OID">SmartHomeSonder.0.Tv.On</field>
       <field name="CONDITION">any</field>
       <field name="ACK_CONDITION"></field>
       <statement name="STATEMENT">
         <block type="controls_if" id="%wW58u?;n`[]b5BBV~[j">
           <value name="IF0">
             <block type="logic_compare" id="YlPsR46lg2RB[7Qa*rBU">
               <field name="OP">EQ</field>
               <value name="A">
                 <block type="get_value" id="|rnVQ8dV^KZ6ceGE|.wd">
                   <field name="ATTR">val</field>
                   <field name="OID">SmartHomeSonder.0.Tv.On</field>
                 </block>
               </value>
               <value name="B">
                 <block type="logic_boolean" id="aLx|9;GsRPN]k-w}C0}]">
                   <field name="BOOL">TRUE</field>
                 </block>
               </value>
             </block>
           </value>
           <statement name="DO0">
             <block type="timeouts_cleartimeout" id="d)nZL{9fJK%dS7W|5|]w">
               <field name="NAME">timeout4</field>
               <next>
                 <block type="timeouts_cleartimeout" id="d/nCWXc]W#Zfv#vjUz*n">
                   <field name="NAME">timeout5</field>
                   <next>
                     <block type="control" id="O;bgDU+{TDnf-[Q[hoyH">
                       <mutation delay_input="false"></mutation>
                       <field name="OID">javascript.0.PhilipsTV-Script.TvOn</field>
                       <field name="WITH_DELAY">FALSE</field>
                       <value name="VALUE">
                         <block type="logic_boolean" id="WZTCA{@t^))c?.Kdy!ci">
                           <field name="BOOL">TRUE</field>
                         </block>
                       </value>
                       <next>
                         <block type="timeouts_settimeout" id="04KAZ,o:jhhJ?j]/rG_m">
                           <field name="NAME">timeout4</field>
                           <field name="DELAY">8000</field>
                           <field name="UNIT">ms</field>
                           <statement name="STATEMENT">
                             <block type="control" id="Y:m0`E^g5:fYZqIxLEA6">
                               <mutation delay_input="false"></mutation>
                               <field name="OID">javascript.0.PhilipsTV-Script.Command</field>
                               <field name="WITH_DELAY">FALSE</field>
                               <value name="VALUE">
                                 <block type="text" id="3U[f,hg,Px#?LLP@o,I?">
                                   <field name="TEXT">Key: Standby</field>
                                 </block>
                               </value>
                             </block>
                           </statement>
                           <next>
                             <block type="timeouts_settimeout" id="+a!W+j%v)~KhlIUz6scy">
                               <field name="NAME">timeout5</field>
                               <field name="DELAY">1000</field>
                               <field name="UNIT">ms</field>
                               <statement name="STATEMENT">
                                 <block type="control" id="*Nsng2O$%AN;-U_8A*1}">
                                   <mutation delay_input="false"></mutation>
                                   <field name="OID">SmartHomeSonder.0.Tv.On</field>
                                   <field name="WITH_DELAY">FALSE</field>
                                   <value name="VALUE">
                                     <block type="logic_boolean" id="4mDT4_?)]Li|yD~fS9~P">
                                       <field name="BOOL">FALSE</field>
                                     </block>
                                   </value>
                                 </block>
                               </statement>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
           </statement>
         </block>
       </statement>
      </block>
      

      Hierzu muss ein "virtueller Taster" ("SmartHomeSonder.0.Tv.On") angelegt werden, der im IOT-Adapter also Virtuelles Gerät in der Alexa angelegt wird.

      Hier musste ich etwas mist den Zeiten experimentieren. Zwischen Wake on Lan und dem StandyBy-Knopf. Mit dieser Verzögerung funktioniert bei mir die Einschaltung zu 100%. Ist zwar immer ne schreck-Sekunde, also ruhig bleiben, aber es geht.

      =======================================================================================

      1. Anregungen

      Was man noch testen sollte wäre Folgendes:

      • Aktuell Sende ich das WOL auf die Wlan-karte (muss ja auch so sein) und Steuere den TV aber über die Lan-Karte. Wäre mal einen Versuch wert, zu testen, ob es auch über die Wlan-Karte Steuerbar ist
      • Ich habe bisher keine anderen Tasten als die Standby-Taste aus Mic´s Script verwendet. Man könnte hier auch Home, etc. verwenden.
      1. Fazit:

      Alles in allem ist es eine kleine Script-Sauerei. Liegt aber daran, dass ich eigentlich noch nie Berührungspunkte mit JavaScript hatte. Habe ein bisschen zusammenkopiert und angepasst. Man könnte sicherlich das WOL-Script direkt in Mic´s Script implementieren. Wollte ich aber erst mal nicht, damit ich Mic´s script nicht unnötig "verwurschtel". Sollte noch etwas Übersicht geben, da es doch eher weniger Anpassungen sind in seinem Code (man spielt einfach nicht in Fremder leute Code... Wie sich das anhört, wenn man es ausspricht 🙂 )

      Irgendwelche Abfragen sind mangels Wissens auch nicht drin. Man könnte sicherlich nen Ping absetzten, und erst wenn dieser TRUE ist, sendet man den Key. Dennoch denke ich, dass man damit mal die WOL-Funktion Testen kann.
      Denkbar wäre auch in Mic´s Script, oder dann irgendwann im fertigen Adapter eine Auswahl zu geben:

      • Einschalten über WOL
      • Einschalten über Harmony (oder andere IR-Geräte)

      Würde mich freuen, wenn sich einige Leute finden, um die ganze Sache zu testen. Ich denke, es kann schon ganz reizvoll sein, ohne Zusatzgerät den TV zu Starten. Oder es läuft wie bei mir, dass ich einfach keinen Spot habe, wo ich den IR-Blaster hinsetzten kann (zudem dass die IR-Schnittstelle von machen Philips-TV´s nicht die beste ist)

      Falls es (Supportan-)Fragen , Anregungen, Ideen Hierzu oder Wünsche gibt, immer her damit. Und viel Spaß beim testen

      mfg Daniel

      @Mic
      @AlCalzone

      posted in Tester
      F
      freak1051

    Latest posts made by freak1051

    • RE: TibberLink Adapter

      Wir haben zusammen die Lösung gefunden. Muss allerdings etwas ausholen.

      @ReblausGT antwortete mir auf meine Mail, dass es so scheint, als ob mein ioBroker kein Internet hat.. Das hat mich etwas verwundert, weil Updates der Adapter gingen ja..Allerdings konnte ich einen Tado° adapter auch noch nicht ans laufen bringen. Das System ist auf Proxmox installiert. Hier laufen auch weitere Container.

      Also über jede Console mal "ping 8.8.8.8" getestet, siehe da der ioBroker Container konnte 8.8.8.8 nicht anpingen, jeddoch google.de ging.

      Hier habe ich dann nach unterschieden zwischen den Containern gesucht und mir ist aufgefallen, dass der ioBroker Container privelegiert ist, die anderen alle nicht.

      Habe dann ein Backup geladen, hier kann man auswählen, ob der CT dann Privelegiert oder Unprivelegiert sein soll.. Zweiteres angewählt, und siehe da, alles klappt wie es soll

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: TibberLink Adapter

      @reblausgt Guten Morgen,

      Also "alter Vertrag" ist fraglich... ich meine DER vertrag ist dieses Jahr im januar oder februaur gemacht worden, da haben wir erst das Haus gekauft... Der etwas ältere, nun nicht mehr aktive vertrag im Account ist vielleicht von november 2023.

      Falls deine email eine .ch mail ist, dann dürftest du der richtige Empfänger sein.. ist gerade was raus, Danke dir schonmal

      posted in ioBroker Allgemein
      F
      freak1051
    • Hilfe bei Blockly mit Shelly und MQTT

      Hallo Zusammen,

      ich habe es in einem anderen Post schon geschrieben, ich war jetzt sicherlich 5 raus aus dem ioBroker game... Und naja sagen wir, wie es ist, es wurde manches einfacher, manches aber auch nicht 🙂

      Habe jetzt mal ein paar stunden verbracht, aber leider komme ich auf keinen grünen zweig...

      Grundsätzlich würde ich gern vorranig an meiner Lichtsteuerung arbeiten. insgesamt sind es 3 Projekte:

      1. Ich habe einen Shelly Plus i4. Bisher habe ich eine Szene, die bei einfach-klick einen RGBW2 auf allen kanälen auf 5 % dimmung (Weiß-modus) anschält und bei einem Doppelklick aus. Das würde ich gerne "offline" ohne Szene nachstellen. Habe hier mich schon etwas eingefuchst, der i4 ist schon per MQTT eingebunden, und habe auch herausgefunden, dass unter dem jeweilgen Input unter Event auch steht, ob es ein einfach oder doppelklick war. Nun Hänge ich.. naja eigentlich schon, wie ich das Blockly anfange. Hierzu sei gesagt, dass ich den RGBW2 noch nicht in MQTT eingebunden, habe da, wie ich gelesen habe, anonsten er aus der Szene Herausfällt. Hier aber mal wurst, ich kann als aktor Beispielsweise einen Plus RGBW PM nehmen. Dies würde ich gerne als erstes Projekt nehmen und bräuchte hilfe

      _Zukunft
      2. Im Treppenhaus befinden sich 2 BLU Motion, welche (oben benannten) Plus RGBW PM in einer Szene Ansteuert (Ein, bis keine bewegung mehr, danna automatisch aus. Geht von allein, da er im Beacon-Mode alle 30 sekunden "sendet" ist dann da keine Bewegung geht die Lampe aus). Auch das würde ich gerne Offline einstellen, da es sonst doch mal doof ist am Morgen, wenn das Internet nicht tut 🙂

      1. Lichtschalter mit einem Plus 2 PM (serienschalter, der evtl durch einen serien taster ausgewechselt wird, ergo 2 taster in einer Dose). Hier möchte ich in zukunft bei einem einzelnen klickt eines tasters Den in Punkt 1 benannten Dimmer ansteuern (toggle - einfach klick -> an einfach klick -> aus). bei einem Doppelklick soll das interne Relais angesteuert werden, welches dann die Deckenbeleuchtung anmacht. Hier gehts darum mit einem Sinlge-Klick die indirekte Beleuchtung zu schalten, die wir eigentlich meistens brauchen, und nur bei einem Doppelklick die Deckenleuchte, die man vlt mal zum Putzen braucht.

      2. Mit einem Plus 1 PM mini soll direkt am Relais-Ausgang die Küchenleuchte angehen. Das Schallsignal soll aber abgegriffen werden, damit ich zusätzlich einen Dimmer ansteuern kann (hier geht es um eine Zusätzliche Arbeitsplatz-Beleuchtung in der Küche)

      Wie gesagt, die punkte 2-4 sind Zukunftsmusik, und hier muss ich auch noch (bei 3. und 4. ) im Haus Umverdahten. Aber wie schon gesagt, ich steh echt auf dem Schlauch, wie ich das jetzt am besten mache. Schön wäre es noch, wenn man ein Kill-Swich noch einbauen könnte. Habe gesehen es gibt mittlerweile eine Geo-Fencing funktion im ioBroker. Hierrüber evtl. Shelly´s (und irgendwann andere Geräte) auszuschalten?

      Vielleicht kann mir ja jemand hier Tips geben. Wäre auf jeden fall saumäßig Dankbar

      Grüße Daniel

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: Shelly Plus RGBW PM via MQTT läuft auf fehler

      @haus-automatisierung Drum sag ich ja, die Grundfunktion tut. Ist ja schonmal was 🙂

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: Shelly Plus RGBW PM via MQTT läuft auf fehler

      @haus-automatisierung
      Habe gestern den Adapter aktualisiert. Die Verbindung klappt bisher über MQTT. Habe bisher nur ein wenig damit rumgespielt. An dem Shelly hängt eh nur ein LED-Streifen in Weiß auf dem ersten Kanal. Hier tut alles, wies soll.. Ich kann über die Objekte die Helligkeit einstellen, ihn an-/abschalten und seh Verbrauchsdaten.

      Hoffe die Info hilft weiter

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: TibberLink Adapter

      Hallo Zusammen,

      auch wenn es etwas aus dem Zusammenhang gerissen ist, ich bekomm den Adapter nicht zum laufen.

      Ich habe mich an die Anleitung gehalten. Habe mir einen Api-Token von Tibber generieren lassen. Bin dann exakt der Anleitung gefolgt:
      Adapter installieren, Api-Token eingeben. Im Dropdown steht dann none avaiable (und irgendwas mit restart adapter). Ich speichere die Konfiguration, der Adapter startet sich neu. Nun sollte er ja mir mir irgendwelche "homes" anbieten.

      In meinen Tibber-Account gibt es 2 Häuser, die Alte mietswohnung, die gekündigt ist (inkl. Strombelieferung). Warum das noch in meiner App ist weis ich nicht, und einen Aktiven Vertrag, in dem der Pulse auch verknüpft ist.

      Mit der App habe ich sowohl mit der Bridge zum Wlan verbindung, als auch vom Pulse zur Bridge.

      Kann mir hier jemand behilflich sein? Habe es sowohl mit der stable, als auch mir der mir angebotenen "aktuellen" beta versucht, und habe beides mal das selbe ergebnis.

      Grüße Daniel

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: Shelly Plus RGBW PM via MQTT läuft auf fehler

      @mcm1957

      Na dann passt es doch. Mich hats eben verwirrt, dass eben die 8.2 noch nicht gibt..

      Naja n Alpha test wäre nicht das Problem, da ich eh ganz vorne steh... mein system ist so neu, des kann noch nicht kaputt gemacht werden 🙂

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: Shelly Plus RGBW PM via MQTT läuft auf fehler

      @da_woody

      Japs, ich empfinde es als respektlos, wenn ich einer mir unbekannten Person gegenüber "Junge" schreib... Und auch "alter" würde ich nicht schreiben...

      Bin einfach ein freund von sachlich...

      "die Firmware-Version deines Shellys Hat mit dem Adapter nichts zu tun, da suchst an der falschen stelle... aber schau mal, "hier" könnte dein Problem sein..."

      Aber gut... lassen wir das..

      Zu meinen Spoilern: Ja, mich machte eben das "maybe" stuzig... Habe ich was falsch gemacht, oder ist das "viellicht" eher ein "ja".. darum gings mir

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: Shelly Plus RGBW PM via MQTT läuft auf fehler

      @mcm1957

      Ich kanns einfach nicht brauchen, wenn man jemanden so anspricht.. Ich hab normal eine frage gestellt, dann kann man normal antworten...

      Genau diese Tabellen habe ich gesehen. Ich habe eben eun Plus, somit fällt COAP aus. Ist mir klar. Kann ich denn nun die Version 8.20 als ausblick sehen, bedeutet selbst in der Beta 8.1.1 findet sich der Plus RGBW nicht?

      Habe nämlich gerade das beta-Repo aktiviert, bekomme aber noch kein Beta angeboten... (dauert das immer etwas länger?!)

      EDIT:
      Gerade dein Edit gesehen.. würde bedeutet selbst die 8.1.1 klappt noch nicht, wird dann wahrscheinlich erst in der 8.2 kommen.. oder sehe ich das falsch?

      posted in ioBroker Allgemein
      F
      freak1051
    • RE: Shelly Plus RGBW PM via MQTT läuft auf fehler

      @da_woody

      1. Junge... echt unfreundlich...
      2. Nein, bin kein Depp... Junge....(nicht nett, oder?)

      @da_woody said in Shelly Plus RGBW PM via MQTT läuft auf fehler:

      die mqtt liste steht nur da, wenn du direkt über mqtt gehen willst. hat mit der shellyeigenen funktion nix zu tun.

      Auf der GitHub seite des Adapters für die Shelly-Integration steht eine Liste, auf der eine MQTT version vermerkt ist, welche aber mit dem Adapter nichts zu tun hat? Dann versteh ich es schon 2 mal nicht. Wenn der Shelly-Adapter nichts mit der Version (in diesem fall MQTT-Version 8.2) zu tun hat, ist diese Info zum einen überflüssig und zum zweiten immernoch fraglich wo denn dann das problem meiner Fehlermeldung kommt

      posted in ioBroker Allgemein
      F
      freak1051
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo