A specific request - Dreamscreen

I'm not sure where would be best to post this so will just start a discussion.

There's a product from Kickstarter called Dreamscreen. I backed the original which was controlled via Bluetooth. In essence, it adds LED reactive backlighting to your TV/Monitor. You turn it on via an app via Bluetooth and to be honest it's a bit of a pain (weak Bluetooth, another thing to switch on/switch inputs with). However, the effect is brilliant and I cannot live without it, especially when watching Blu-Ray content and similar.

They have a new updated Wi-Fi controlled version coming ( https://www.kickstarter.com/projects/237916976/dreamscreen-hd-and-4k-led-backlighting-for-any-hdm/description ) and I wonder how I can integrate it into my NEEO system. What I'd love to be able to do is create a recipe that switches it on when I turn on my TV/Blu Ray/Roku and to recognise the correct input.

Is it something that you guys at NEEO need to implement or is it something the Dreamscreen team needs to access the SDK for? Or does one of us need to write something for it?

Would definitely love to have it as part of my NEEO set up but do recognise that it's a pretty specific request - not sure how many NEEO and Dreamscreen users there will be!

James

Reply
197replies Oldest first
  • Oldest first
  • Newest first
  • Active threads
  • Popular
  • I'm now actually thinking to place an pre-order for new Dreamscreen.

    But situation with EU shipping and aditional taxes might change that.

    Reply Like
    • Girts Burnauskis Dreamscreen is excellent. I'm upgrading from v1 and the team there are great. If you're talking about the EU import charges, perhaps ask Patrick here about it as I'm not sure there is going to be a problem from what I read in the update. To me, it just appeared to be a warning that some people in some locations may incur import taxes/charges (I certainly will in Iceland, non-EU). 

      Anyway, back to Dreamscreen, it's a great product and I'd highly recommend it.

      Reply Like
    • I‘ve recently bought the new wifi version and had no issues with additional taxes (austria)

      Reply Like
  • James Long  Haven't heard about dreamscreen before but it seems to be similar to the Philips Ambilight built in their TV products? Looks fantastic! :) 

    Reply Like
    • Onni Manninen it's exactly like that! It's honestly amazing and I couldn't be without it now. You know something is good when your non tech wife is impressed. Here's hoping NEEO is the second thing that she likes of my many tech products!

      Reply Like 1
  • I loved my DreamScreen when I got it even thought it was a little glitchy (1st edition) and had hoped it would work with neeo. But It's both both bluetooth controlled and obsolete now the wifi version is coming so I'm not holding out much hope. Once the new version is out and it shows its more stable then the first I'd be keen to jump back in - especially if neeo can trigger its activation.

    Reply Like
    • Jamie I think the wi-fi implementation by Dreamscreen should make it controllable by NEEO. The question will be which team (NEEO or Dreamscreen) does something to make it work.

      I haven't found it to be too glitchy - there has been the occasional hiccup, and it's certainly not manufactured to the standards of NEEO, but it works really well in my experience. I was looking originally at making my own Ambilight type product but then these guys came along. One thing I have found with them is that they are really responsive and communicative to any questions and issues.

      Reply Like
      • Jamie
      • Jamie
      • 1 yr ago
      • Reported - view

      James Long  plugged back together my Dreamscreen on the weekend as you pointed out there support was helpful and I hadn't even asked them seeing as I thought it was 100% dead so set it up to test - and it was working again. Odd as it had stopped and I had pulled it down to trouble shoot connections and splitter options to no avail before and now it just worked first time - figures. Put it back up and watched a movie - wished I had backed the upgrade now as I'd definitely have a crack at adding it via the API myself.  Not worth even investigating bluetooth bridging options as apart from just adding complexity for me with my TV on the wall and the device behind it effectively shields the signal - great design hopefully Wifi does better.

      Reply Like
  • Interesting product, didn't know that one.

    There are basically two approaches, either they use our SDK to have a driver running right on their setup, or we have a driver running on our side which would require that we have access to their SDK / API.

    When they have an SDK / API published, you could go ahead right away and start working on an integration by using our SDK. Do you happen to know if they will allow control from other devices?

    Reply Like
    • Patrick thanks Patrick, I will check with them and find out but I know they are looking at integration with a range of products (Alexa, Google Home and Hue lights) so imagine there is going to be some way to get this working. I will look into further and see what I can do. 

      Reply Like 1
  • Indeed it look like a really nice way to get the Ambilight effect to every TV Manufacturer.

    Is it working with a single input? In my current Setup i only have one line from the AVR to the TV, everything else is plugged in the AVR, as i understand it should work. Maybe someone owning such a device has more detailed Info.

     

    As NEEO is capable of Bluetooth and WiFi acc the Specs, anything to know is just the Signals / Protocol used to control the Device, with an aditional SDK Device it should be very easy to get it integreated in NEEO. MAybe they allready have a node.js package available internally. Bluetooth reverse engineering is not really nice. But maybe the Guys also want the Connection to be possible and tell some more Informations.

    Reply Like
  • The guys at Dreamscreen have provided an update which sounds positive! Here's what they said:

     

    "THank you for bringing NEEO to our attention. We will definitely look into it in more detail. The current Wifi versions shipping out use a Wifi command that uses binary data and checksums. In November when we bring connectivity with Alexa etc, we will also have more user-friendly Wifi communication using json. With this and NEO SDK, it should be very easy to take control of DreamScreen products as well."

    Reply Like
  • Thanks for checking that with them! It would actually be very interesting to see them writing a driver on their side, so as soon as you own one it is discovered by NEEO when you are adding a device. But when they can provide the commands, that works too.

    Another questions would be on what you would actually want to do with it, turning on / off, changing colors? Or is there more?

    Reply Like
    •   Patrick there are a few functions you can control. There is video mode - the new HD/4K versions should recognise the video input and provide variable backlighting for each input. So for NEEO as an example, I would want a recipe that could switch on Blu-Ray mode on the TV, turn on the Blu-Ray player and soundbar and then turn on the Dreamscreen to video mode. If necessary then it could switch the Dreamscreen to Blu-Ray input but as I said, I think it is going to be automatic.

      Other modes included are Ambient mode - this is basically lighting behind the TV. They currently have things such as Fireplace and Holiday modes which vary the lights to produce ambient lighting. It will in the future be linked to Hue lights - unfortunately, you won't be able to use Hue with the video mode as the refresh rate of the Hues would be less than the 60Hz required by Dreamscreen. So NEEO could perhaps control the ambient mode/lighting at the same time as Hues.

      There is also music mode. So here NEEO could start a recipe to play Spotify through your AV gear with Dreamscreen controlled accordingly also.

      In essence it's going to be another remote we can hopefully get rid of.

      Reply Like
      • Patrick@NEEO
      • Community Manager
      • Patrick
      • 1 yr ago
      • Reported - view

      James Long That sounds feasible in general. Can you let us know once the new version is available?

      Reply Like
    • James Long as soon as they have a rest API then it would be super easy to support, with just binary and checksums it wouldn't be to hard either as long as they have public documentation.

      Reply Like
  • How far it have progressed???

    Regular HD versions and side kicks are available to bay now!!!

    At the end I ordered HD 2FLEX kit for my 100ich screen :) need to wait little bit more for led strips and uprated psu.

    Reply Like
    • I've asked over on their Kickstarter page again - I think they're running a little behind with their shipments on the newer 4K units and the priority is there first. But I still believe they intend to open things up to be controllable in the future. I'll report back once I hear from them as it would be good to have control via NEEO for sure

      Reply Like
  • I have an update from the Dreamscreen guys as follows - could I ask Andy to please take a look at whether the information in the link provided is enough to be able to use Dreamscreen through NEEO? Message from them:

    James, 
    We have the commands listed here: 
    http://dreamscreen.boards.net/thread/293/dreamscreen-wifi-udp-protocol

    Please let us know if NEEO needs more than that to integrate our product. We are very interested in making DreamScreen control available on different hardware platforms and intend to focus on this early next year.

    Many thanks

    James

    Reply Like
    • Sorry, I just realised the link was to a PDF and you have to be a forum member. Attached the PDF here. Let me know if you can use it?

      Reply Like
    • James Long 

      Thanks!

      It looks like these are IP commands, not IR. Can you ask them again for IR commands. Chances are that IR is not supported by this device. 

      The IP part can be helpful, too. You could create an IP driver with the SDK. Maybe Niels de Klerk  can help you with this.

      Reply Like
    • Andy Thanks for the quick response. It's not controlled by IR. It uses a phone app over wi-fi. Niels de Klerk it would be great if you could help on this! It's a bit out of my skill range I think

      Reply Like
  • Her's some info for older bluetooth version 

    https://www.npmjs.com/package/dreamscreen

    Reply Like
  • There seems to be Windows app available.

    https://github.com/avwuff/DreamScreenControl/

    And bit more for old Bluetooth version

    Reply Like
  • I had a quick read through some of the info posted on how to make a driver but it's beyond me unfortunately. If anyone is able to add their input to this it would be great. 

    Reply Like
  • Give this a try. I've read the documentation and this should do somethig i believe. cant test it myself as i dont have one.

    edit the following hex to get the command you want. folowing the PDF.

    let command = [0x01,0x21,0x03,0x01,0x00];

     

    const dgram = require('dgram');
    
    
    let uartComm_crc8_table = [
    
    0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,
    
    0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D,
    
    0xE0, 0xE7, 0xEE, 0xE9, 0xfc, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
    
    0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,
    
    0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,
    
    0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,
    
    0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,
    
    0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,
    
    0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
    
    0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,
    
    0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,
    
    0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,
    
    0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63,
    
    0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13,
    
    0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,
    
    0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3
    
    ]
    
    
    function uartComm_calculate_crc8(data) {
    
    size = (data[1] + 0x01);
    
    let cntr = 0x00;
    
    let crc = 0x00;
    
    while (cntr < size) {
    
    let f = (crc ^ (data[cntr])) & 0xFF
    
    crc = uartComm_crc8_table[f];
    
    let a = crc.toString(16);
    
    cntr++;
    
    }
    
    return crc;
    
    }
    
    
    function sendCommand(command){
    
    let header = [0xFC, (command.length + 1)];
    
    let data = header.concat(command);
    
    data.push(uartComm_calculate_crc8(data));
    
    console.log (data);
    
    let message = new Buffer(data);
    
    let client = dgram.createSocket("udp4");
    
    client.on('listening', function(){
    
    client.setBroadcast(true);
    
    client.send(message, 0, message.length, 8888, "255.255.255.255");
    
    client.close();
    
    });
    
    client.bind(8888);
    
    }
    
    
    //Data command
    
    // Group Address = 01
    
    // flags = 0x21
    
    // command upper = 0x03 -> Commands
    
    // command lowwer = 0x01 -> Mode
    
    // payload = 0x00 -> 0 - Sleep
    
    
    let command = [0x01,0x21,0x03,0x01,0x00];
    
    
    sendCommand(command);
    
    
    Reply Like 1
    • Niels de Klerk Wow! I will give this a read through and try in the next few days. I was only joking asking you for help so thank you for trying - I was going to see if the guys at Dreamscreen wanted to make use of things. Good news is that my parents are away for a week from tomorrow so I can have a play with NEEO at my leisure without fear of issues.

      Reply Like
    • Niels de Klerk Can I just check, is what you have written based on the PDF I attached using the IP or wifi commands?

      Reply Like
    • James Long yes, you probably need that to find the right commands in the PDF.

      packet length, crc checksum and UDP sending of the commands are all handled by the code. so you don't need to do that all. an example is already included.


      My Colleague has also a Dreamscreen, I Knew he wanted a driver as well so I opened the PDF yesterday evening and thought. okay. this isn't going to work if your new to coding so I wrote a basic script. that can easily be turned into a driver. 

      Reply Like 1
    • Niels de Klerk Thank you - I can confirm that my long ago knowledge of coding is forgotten (it wasn't very good in the first place). I may contact the guys at Dreamscreen about this and see whether they can come up with something. I can kind of see how it may work but I am not confident to build anything from it and troubleshoot. I have had a good look through your helpful guides too but I'm a bit lost.

      Reply Like
    • James Long if you take my script save it as a js file and start it with node script.js

      what is the outcome?

      Reply Like
    • Niels de Klerk I ran this in cmd this is what I got 🙂 no idea what it means but I'm proud to have somehow run a command that produced results (from a script you wrote of course) - no idea if this is what you're asking for:

       

      Reply Like
    • James Long did it do something to your dreamscreen ?!

      Reply Like 1
    • Niels de Klerk Um...I ran it on my PC in another room and haven't actually checked. We are on a different wifi connection name too - could that being run on my PC literally control the Dreamscreen??

      EDIT: Nothing happened with my Dreamscreen (PC on 5G wifi, Dreamscreen on normal)

      Reply Like
    • James Long I think the script sets it to sleep. Please have a look at The first byte in the “let command = ...” its now 0x01 Please try 0x00 0x02 or 0x03 its suppoost to be a group? Does that mean anything to you?

      Reply Like
  • Please try using the PDF and some different commands.

    Reply Like
    • Niels de Klerk I changed the code to the following which I believe should change modeto video. The output is shown below it. Nothing happened with the actual Dreamscreen though. I think I'm interpreting this right? However, I'm a long way from understanding how to use this with NEEO if I'm honest - I'm trying though!

      Reply Like
    • James Long Im not sure how groups work. Might be that yours is in another group?

      Reply Like 1
    • Niels de Klerk Not sure and not sure how to check. May drop them a message to find out

      Reply Like
    • James Long another thing you could test is to remplaceer IP 255.255.255.255 and set it to the IP of your DreamScreen. And set broadcast to false. Maybe your WiFi is blocking the broadcast.

      if it doesnt work then we have to wait for Oswin Peters

      Reply Like
    • Niels de Klerk thank you, I'll sit tight I think and see if we can get some feedback as I'm a little unsure of what to do

      Reply Like
  • Oswin Peters Please do some testing. And stop playing with Lego 😒

    Reply Like
    • Niels de Klerk Here is a packetcapture from the executable that works.

      Issued: DreamScreenControl.exe 172.19.3.100 3 & DreamScreenControl.exe 172.19.3.100 0

      Reply Like
    • Oswin Peters James Long

      I was able to reproduce your packets. with the following script.
      please remove the comment marks (//) and set the correct IP to enable the different pre staged tests. also included some additional info in the end.

      like in //sendCommand('10.2.1.1', [0x00,0x11,0x03,0x01,0x02]);

       

      const dgram = require('dgram');
      const client = dgram.createSocket("udp4");
      client.bind(8888);
      
      let uartComm_crc8_table = [
          0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,
          0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D,
          0xE0, 0xE7, 0xEE, 0xE9, 0xfc, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
          0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,
          0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,
          0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,
          0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,
          0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,
          0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
          0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,
          0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,
          0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,
          0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63,
          0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13,
          0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,
          0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3
      ]
      
      function uartComm_calculate_crc8(data) {
          size = (data[1] + 0x01);
          let cntr = 0x00;
          let crc = 0x00;
          while (cntr < size) {
              let f = (crc ^ (data[cntr])) & 0xFF
              crc = uartComm_crc8_table[f];
              cntr++;
          }
          return crc;
      }
      
      function sendCommand(ip, command){
          let header = [0xFC, (command.length + 1)];
          let data = header.concat(command);
          data.push(uartComm_calculate_crc8(data));
          printHex(data)
          let message = new Buffer(data);
          client.on('listening', function(){
              client.setBroadcast(true);
              client.send(message, 0, message.length, 8888, ip);
          });
      
      }
      
      function printHex(data){
          let strData = '';
          for (i in data){
              let hx='0'+data[i].toString(16);
              strData = strData + hx.substring(hx.length - 2);
          }
          console.log ('Sending data: '+strData);
      }
      
      //
      //  sendCommand( IP, [A, B, C, D, E] );
      //
      //  IP  Ipaddress       i.e. 10.2.1.1
      //  A:  Group Address,  i.e. 0x00
      //  B:  flags?!         i.e. 0x11
      //  C:  command upper   i.e. 0x03
      //  D:  command lowwer  i.e. 0x01
      //  E:  payload         i.e. 0x03
      //
      
      // Sends mode Video
      sendCommand('10.2.1.1', [0x00,0x11,0x03,0x01,0x01]);
      
      // Sends mode Music
      //sendCommand('10.2.1.1', [0x00,0x11,0x03,0x01,0x02]);
      
      // Sends mode Ambient
      //sendCommand('10.2.1.1', [0x00,0x11,0x03,0x01,0x03]);
      
      // Sends mode Sleep
      //sendCommand('10.2.1.1', [0x00,0x11,0x03,0x01,0x00]);
      
      // Low Brightness (20) -> 0x14
      // sendCommand('10.2.1.1', [0x00,0x11,0x03,0x02,0x14]);
      
      // High Brightness (100) -> 0x64
      // sendCommand('10.2.1.1', [0x00,0x11,0x03,0x02,0x64]);
      
      /* Ambient Mode Type
      0x03    0x08    0x00 - RGB Color
                      0x01 - Scene
      
      Ambient Scene
      0x03    0x0D    0x00 - Random Color
                      0x01 - Fireside
                      0x02 - Twinkle
                      0x03 - Ocean
                      0x04 - Rainbow
                      0x05 - July 4th
                      0x06 - Holiday
                      0x07 - Pop
                      0x08 - Enchanted Forest
      
      HDMI Input
      0x03    0x20    0x00 - Channel 1
                      0x01 - Channel 2
                      0x02 - Channel 3
       */
      Reply Like
    • James Long Oswin Peters

      Oswin just apped me that the above script is working for him. Give it a try.

      Reply Like
    • Niels de Klerk thanks for that - I am struggling to find the ip address of my Dreamscreen. I have checked on my router and it isn't on there. I don't understand the instructions in the PDF from Dreamscreen either.

      Can I pleased double check: if I run the script above, with the Dreamscreen IP address correctly inputted and removing // - do I just add the command I want to the bottom of the script? i.e. just remove // for which ever command I want to use?

      If that works ok (after I figure out the IP and make sure I set it as fixed) - how do I get it onto the NEEO?

      Thanks again for doing this - it looks like you have done a great job and it's just my lack of technical know how stopping it from working smoothly

      Reply Like
    • James Long removing the comment characters (//) Will make that line of code executed. If you got this working then use the NEEO SDK Examples. Open up the simpledevice Example and add the code to the Example. And the “command” to turn the DreamScreen on to one button and the off to the other button. 

      You have all the code Thats needed for a basic driver. Only thing you have to do is combining it. this I’m not going to help you with. :-) I’m sure you can figure it out and have the pleasure of writing your own driver.

      creating a driver isn’t necessarily about knowing how to write code. As starters it’s often enough if you can read and almost understand what it does. If you got that then it’s just placing the code in the correct place. Copy/paste. The Example shows that If you press a button that a bit of text is Printed on screen. My script shows that one line of code can act as a command. <hint>. Have fun 😁

      Reply Like 1
      • James Long
      • James_Long
      • 11 mths ago
      • Reported - view

      Niels de Klerk Thanks for that - I will have a look when I get some time. Unfortunately don't have much time at the moment to do this but will look into it 🙂

      Reply Like
    • James Long 

      I will join in when (if) i receive my HD 2FLEX kit

      Reply Like
    • Niels de Klerk

      How to run that script?

      I get this error regardles what is on node.js file

      Reply Like
    • At last i found how to run it :) and it even works!!!!!

      now to learn NEEO SDK....

      James Long

      To get DS IP  host name is different, on mine it is ESP_40Dxxx

      Reply Like
      • James Long
      • James_Long
      • 11 mths ago
      • Reported - view

      Girts Burnauskis thank you - I'll perhaps have a look back at this when and if I'm able to use my NEEO after the next updates. I don't really understand what I need to do still and unfortunately don't have the time or inspiration to create a driver myself. Plus I don't know how I would run it as think I need to use another computer even or a Raspberry Pi? Anyway, I'll revisit this another time I think if NEEO becomes a viable replacement for my remotes.

      Reply Like
    • James Long Niels de Klerk   Well I finally managed to make script work on PC to control DS and managed to install example device from SDK on neeo but that's how far I got so far. Don't understand do I have to add whole script with different command on each function button and where exactly, or just add commands for buttons??? It's not as easy I did think...

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • 1
      • Reported - view

      Girts Burnauskis I don't know how to do any of this and it really isn't something I have time or interest in doing. I'm just not up for tinkering too much - I know my request was a specific one and appreciate Niels has written a working script but I have no idea how to get it onto my remote or use the SDK - I'm just not technically minded enough unfortunately. I'll have to wait for an official driver to be released I think.

      Reply Like 1
    • take this text and save it to test.js Change the IP in the code and test withbthe command “node test.js” make sure you have a working dreamscreen script. of iT works toen celebratie your victory.

      now use the example driver, start it and add it as a driver to NEEO and press the commands on the remote/app and see what’s happening on screen. Now open the JS files with an editor and see if you can find out what part of code is run when you press a button on the remote. If you do this it will get evident how the code works (more or less) you don’t have to be a developer as you will notice at that point.

       

      if both my script and the example work then it’s a question of merging both code. If you are at that point jou either know what to do or ask me here :-)

      Reply Like
  • Niels de Klerk I tried your program but I can't get it to work. Tried various values but no responds. I also tried the Windows executable and that works. Is your code based on this: https://github.com/avwuff/DreamScreenControl/  ?  This program has only 4 inputs: 0-1-2-3

    1 is Video etc.  

    Reply Like
  • Tim Roberts Tim, this is the thread I just mentioned.  Niels de Klerk has kindly written some code but my understanding of the coding, SDK and node.js is not good enough to be able to get this working. Is openHAB an option for controlling this device in your opinion or is it for something totally different? Many thanks for taking a look! No worries if it doesn't make any sense either or it's something you cannot help with

    Reply Like
    • James Long 

      There doesn't appear to be anything specific to it yet - although https://docs.openhab.org/addons/bindings/wifiled/readme.html might work. If it's able to be controlled via google home or apple homekit - you'd get it as a side benefit to those bindings.

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Tim Roberts thank you, I think I misunderstood what openHAB could do there. I thought it was perhaps somewhere I could load the driver or SDK and control it through it. Outside of doing this I don't really know how to otherwise! Told you my knowledge on this type of thing was lacking!

      Reply Like
    • James Long as with anything, an implementation/ driver needs to be written by someone first. With the code that I wrote, NEEO is currently the only HA solution that I know off that has “support” for dreamscrean. (Within quotations because I really coded the bare minimum)

      Reply Like
    • James Long 

      Sorry - openHAB is a generalized home automation system.  Anyone can build drivers (called bindings) that represent a physical device and allow control over that device.  If a binding doesn't exist (such in the case of DreamScreen) - you either build it yourself, get the creator to build one or post a request to the community and see if someone will build one (generally only get someone whose a programmer and has the device for that option - a bit of a long shot).  However, you may want to post something to the DreamScreen forum as some people have talked about openHAB in it (maybe they will build something)

      Reply Like 2
  • Hi everyone, I'm posting up on the Dreamscreen forums to see if the team there may be able to create a driver from what Niels de Klerk has already created.

    I have a couple of quick questions though - if a driver is created, does this need to be sent to the NEEO team to be implemented and usable? Or does it need to be loaded onto a device (PC, NAS) that remains on and it can then be used?

    The reason I ask is because if someone is able to create a working driver, how can I integrate it into existing recipes? So when I turn on the Roku it becomes part of that recipe and turns on the Dreamscreen/sets the right settings?

    If it cannot be integrated into existing recipes, will it therefore have its own recipe instead? Therefore requiring me to run "Roku on" and "Dreamscreen on" recipes separately? I'm a little confused by this.

    Reply Like 1
    • James Long 

      As far as I understand, DS must be added as accessory device and once it is loaded on brain it stays there. After it is there you can add specific functions to your recepe, like tv on, DS On video mode, hdmi1 etc... then to have more in-flight controls for DS you can add functions on shortcut menu.

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Girts Burnauskis I thought that may be the case but am I right in saying that we cannot add it as a device onto the Brain? That has to be done by the team at NEEO? So say I built a driver, how would I get it on the Brain to use it?

      Reply Like
    • James Long Currently, there is no way to add drivers running on seperate hardware using the SDK. Doing so would take significant development time and it is all about priorities.

      The other thing is that drivers sometimes include other node js modules written by other non-Neeo uses and I am not sure how that would impact integrating a driver into the Neeo Brain.

      There is software and there is badly written software. A badly written driver could significantly impact the performance and stability of the Neeo.

      While it isn’t that straight forward as it seems, one example is the LIFX driver which started out as an SDK project and is now part of the NEEO as a standard driver.

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Paul Spee Understood. However, if someone, or even I, were able to create something that can control our Dreamscreens via NEEO, how would be then go about using it? I'm a bit confused by this. Would our code need to be loaded into something else like a Raspberry Pi or NAS system? Would we be able to add the Dreamscreen as a device and incorporate it into recipes if we did things this way?

      Reply Like
    • James Long 

      The SDK requires node js which runs on Windows, macOS, or Linux. Raspberry Pi runs Linux as do most Nases. I am running running Node is on my Mac Mini.

      The most important thing is that you can run it 24x7. 

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Paul Spee OK thanks. I have a Synology NAS which I know you can install NodeJS onto but I wouldn't know what I was doing to be able to use it if I'm honest - it's a bit beyond me and I think I'd certainly struggle getting something like a Dreamscreen driver onto it, let alone figuring out how to make it work with NEEO.

      Reply Like
  • Niels de Klerk Hey Niels, I may have progressed further than I thought...I have installed NodeJS onto my Synology NAS and managed to install the NEEO SDK onto it. I have just tried to run the index.js from the examples (as per your tutorial) and it looked ok until it said the error in the attached image. It discovered the Brain OK initially which amazed me!

    I was hoping to then use the index.js file as my template for the Dreamscreen script and try adding it to my NEEO. But I'm not sure what to do now with the following error? Would appreciate any thoughts or comments.

    Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • 1
      • Reported - view

      Niels de Klerk Oh wow - I managed to trouble shoot this one myself! I changed the ip of the Brain which I've created a static IP for and now the server is running...

      I guess I can use your script now in another .js file to see if I can control Dreamscreen? I'm surprised I have got this far to be honest...

      Reply Like 1
      • James Long
      • James_Long
      • 10 mths ago
      • 1
      • Reported - view

      Niels de Klerk  I can confirm that I do not know how to proceed. I have copied your script into the Simple Accessory example but I get a lot of different errors when I try to run it which may be down to how I have pasted it in? I have attached the index.js file here. Do I have to change the controller.js file also to get the remote working with the index.js? Any help on this would be appreciated - I feel I am close but I also don't want to do any harm

      Reply Like 1
    • James Long well that's as far I managed to get with win pc.

      Actually you are fewe steps ahead of me :) running it on NAS...

      I have Zyxel 310s nas but so far couldn't find a way to install mode is...

      Reply Like 1
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Girts Burnauskis well I'm not sure I'd class what I have as working but I am pretty sure the SDK is installed on the Synology OK and I seem to be able to run the very simple accessory. Unfortunately I am at a loss now with the code required to make the Dreamscreen script above work. I have pasted it in where I think it should go on the simple example but I think it needs more than that plus some understanding of the controller too - I can't get my head around it. I feel we are close but not quite there yet! Really hoping someone with a bit of coding knowledge can help us with the last steps

      Reply Like
    • James Long Niels de Klerk

      Niel Your script definatly works100%

      i finaly managed to make it run with sdk in visual studio but it dose not controll DS. if script is run separatly it works ok, so it might be again some windows issues, it dose execute command but with undefined at the end.

      I'm attached controller file(need to edit with your own DS ip) to replace in SDK simple accessory to try it in different enviroment! Add shortcut functions (colour buttons and A B) from  NEEO Accessory.

      Reply Like
    • Girts Burnauskis Girts Burnauskis the undefined is because you console.log the outcome of sendCommand. As sendCommand doesn’t return a value (undefined) it will show just that. 

       

      Remoce the “console.log(“ and one “)” without quotes and you’ve got it all working. :-)

      Reply Like
    • Niels de Klerk  But it is exactly what i have :)

      console.log(sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]));

      but if i add name of command before like

      console.log("BLUE");(sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]));

      it dose note give undefinide but still dose not controll DS :(

      or did you meant remove console.log like

      (sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]));

      then it execute command but dose nothing with DS

      or it can be bear command line which diffinatley works once on script launch if put on a script bottom separate 

      sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]);

      again it executes command but dose nothing on DS


      [DS] default button was pressed!
      Sending data: fc060011030d01f6
      undefined


      [DS] default button was pressed!

      BLUE

      Sending data: fc060011030d03f8


      [DS] default button was pressed!

      Sending data: fc060011030d01f6
       

      Reply Like
    • Niels de Klerk Thank you for all your help and excuse me my stupidity :) Never done something like this...

      All in all i feel that i'm close but still can't make it work and send data .

      As you mentioned i changed command function line in several ways and it works within the script it shows that data sent but dose not send any data ( i did try try to see with wireshark and nothing with destination on DS)  if script is run separate yes there is traffic to DS an it functions.

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Girts Burnauskis Niels de Klerk yes thanks Niels for where you've got us to and sorry we can't figure out the last bits! Weirdly, when I went to turn on the Dreamscreen as normal via the iOS app tonight, it would not find it - I had to do a reset because it had turned off somehow. Something is kind of working with what we have although I don't know where to start with the controller side of things. I did look at all the examples today but struggling to understand the coding language and how to implement it for the Dreamscreen.

      Reply Like
  • Niels de Klerk

    Well i sort of managed to control DS from NEEO but only one function and once, on second function i got error. i suspect that adding whole script to one function is not right but it was the only way how to finaly make it work and send data to DS. i will attach both controller files.

    Reply Like
    • Girts Burnauskis You are almost there :-)

      The first time you send a command a service is opened on your computer so it can communicate, the second time the service is still running and thus port 8888 is occupied on the computer so a new binding will result in an error, I've slightly changed the code and corrected some coding, could you try this one?

       

      const dgram = require('dgram');
      const client = dgram.createSocket("udp4");
      client.bind(8888);
      client.on('listening', function(){
       client.setBroadcast(true);
      }
      
      let uartComm_crc8_table = [
          0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,
          0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D,
          0xE0, 0xE7, 0xEE, 0xE9, 0xfc, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
          0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,
          0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,
          0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,
          0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,
          0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,
          0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
          0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,
          0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,
          0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,
          0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63,
          0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13,
          0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,
          0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3
      ]
      
      function uartComm_calculate_crc8(data) {
          size = (data[1] + 0x01);
          let cntr = 0x00;
          let crc = 0x00;
          while (cntr < size) {
              let f = (crc ^ (data[cntr])) & 0xFF
              crc = uartComm_crc8_table[f];
              cntr++;
          }
          return crc;
      }
      
      function sendCommand(ip, command){
          let header = [0xFC, (command.length + 1)];
          let data = header.concat(command);
          data.push(uartComm_calculate_crc8(data));
          printHex(data)
          let message = new Buffer(data);
              client.send(message, 0, message.length, 8888, ip);
          });
      
      }
      
      function printHex(data){
          let strData = '';
          for (i in data){
              let hx='0'+data[i].toString(16);
              strData = strData + hx.substring(hx.length - 2);
          }
          console.log ('Sending data: '+strData);
      }
      
      module.exports.onButtonPressed = function onButtonPressed(deviceid, name) {
      
        if (deviceid === "button-a") {
          sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x01]);
        }
      
        if (deviceid === "button-b") {
          sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]);
        }
      
        if (deviceid === "FUNCTION RED") {
          sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x02]);
        }
      
        if (deviceid === "FUNCTION GREEN") {
          sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]);
        }
      };
      
      // Send 1st command at start
      sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]);
      
      // Send 2nd command at start
      sendCommand('192.168.86.163', [0x00,0x11,0x03,0x0D,0x03]);
      
      //Remove these two after testing is done.
      Reply Like
    • Niels de Klerk  James Long

      Thank you! I had to make little changes and it works now!!!!!!!!!!

      const dgram = require('dgram');
      const client = dgram.createSocket("udp4");
      client.bind(8888);
      REMOVED>> client.on('listening', function(){
      REMOVED>> client.setBroadcast(true);
      REMOVED>> }
      function sendCommand(ip, command){
          let header = [0xFC, (command.length + 1)];
          let data = header.concat(command);
          data.push(uartComm_calculate_crc8(data));
          printHex(data)
          let message = new Buffer(data);
              client.send(message, 0, message.length, 8888, ip);
       REMOVED>>   });

      Working Controller file attached

      Now to add rest of functions :)

      Reply Like 1
    • Girts Burnauskis Ahh cool! Feels good making your first driver doesn't it?
      Now you should change the driver name, button names etc to finish your driver.

      I don't own a DS so I couldn't do it myself but if you are able to make the DS discoverable within the NEEO driver then the driver can be submitted to the NEEO dev's requesting inclusion in the NEEO firmware. This is maybe 2 bridges to far (for now) but if you pull it off then your code could be included and your name for ever on the wall of fame ;-)

      Reply Like 1
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Girts Burnauskis Niels de Klerk

      Well done Girts - you seem to be cracking it - you're way ahead of me and where I can get. I'm still trying to make sense of the code! Thanks for what you've managed to do.

      Niels - if we (Girts) manages to create a working index.js and controller.js, in order to get them working would I just place them in a similar location to the SImple Accessory Device (which I got working) and run the index.js via NodeJS? Would this then run the Dreamscreen driver so it could be added via the NEEO app?

      If so, would we have to reload it every time we restarted our PC's/NAS's or once it's loaded would it be ok? I assume we would have to re-run things as the Brain would be communicating with the code stored on our PC/NAS right? Sorry if these are basic questions, I'm just trying to get my head around the flow of code and info 

      EDIT: I can already see one big mistake I was making...adding code to entirely the wrong file! Index instead of controller! Oh well, you live and learn...

      Reply Like
    • James Long That's exactly why I haven't included my DS code into the example code. So you, Girts and others that want to have this as a driver are pushed to build the driver out of two working parts. You will run into issues and need to solve them but at some point all the puzzle pieces will fall in place, then you learned something new. ;-)

      You can use Girts file and overwrite the example file. When Girts Burnauskis has both files ready I'm sure he will share them both.

      The driver code always needs to be running for the driver to work. this means that if your PC/NAS is turned off, the driver won't work. If the script crashed or is killed then the driver won't work as well.

      Currently the driver needs manual editing and setting of an IP-address. If the driver evolves into a state where you could discover the device through the use of the driver then you can submit it no NEEO. If the NEEO wizards deem the code clean and safe then they can include it in the main release and the DS will be supported natively from that point.

      Reply Like 1
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Niels de Klerk cool, thanks Niels - I think I'm beginning to understand the basics. Put it this way - yesterday I managed to change the names of the Simple Accessory to DreamScreen and therefore could technically add Dreamscreen via the NEEO app, although it was only the example code. It was cool to see it appear though from something I had done.

      I am not sure I am capable of editing the code as Girts has done but I may have a play with it...

      When you say copy it into the example, do you mean into the index.js or controller.js file...basic question I know 

      Reply Like
    • James Long I’m not going to give a straight answer but I’m going to help you figure it out. 

      So you have added a driver to NEEO, if you press the buttons then you see something happening on screen of your driver. Find the given output in your code and you know what lines get executed when you are pressing a button. This is the location where you want to turn on or off the DS. :-)

      Reply Like 1
  • I'm on it :)  Niels de Klerk

    one more thing, on button name category is added automatically,

    is there a way around it? I know that category can't be changed but would make sense to not have ir in name.

    Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Girts Burnauskis This is looking impressive Girts - I'm not even close to being able to see stuff like this! For the naming, can you not call it something else? I'm sure there were other categories you could class it as when I was looking yesterday. I'd need to check.

      On a slight aside, what are Button A, B and C assigned to? Is that for HDMI 1, 2 and 3?

      My sequence for using Dreamscreen is pretty much "press Video" "select HDMI input". And then "off" when I'm done!

      Reply Like
    • Girts Burnauskis you can change the device type to light. and I suggest doing that. You need the On and Off commands as buttons. (name them "POWER ON" and "POWER OFF") and NEEO will make a On/Off switch for you ;-) I would set On to the most used setting and Off is evident.
      Look here for more names that NEEO recognizes or use my guide here.

      but Accessory is also fine. The reason it displays ACCESSORY is because of a know bug in the renaming process. 

      1. First remove the device from NEEO.
      2. Now add the device again but while adding the device enter the name you want to give it. i.e. DreamScreen (so during the add device wizard) now it should show DREAMSCREEN opposed to ACCESSORY. 
      Reply Like
    • Niels de Klerk As an addition a Light device can off course have all the other named commands as well. and you can add then as shortcuts. I do believe a light device with a on / off switch is the most elegant solution.

      Reply Like
  • Niels de Klerk James Long

    This is how far I am :)

    For others IP of DS must be changed in controller file on command lines!!!

    Still feve bugs left, one question is how to add time delay between functions? In Native DS control on app and general on some functions are available only after previous  function is selected, so in sequence it could be done with one button. :)

    Other thing (might have to find out from DS team) about RGB colours in ambiance mode, from PDF table i can't work out how to set full brightness, values Accepted is from 00-99 but it gives only about 65% brightness with value 99 on colour bars.

    It is fun to see that DS app screen on phone changes when you change functions on NEEO :)

    if (deviceid === "FUNCTION RED") {

    sendCommand('192.168.86.163', [0x00,0x11,0x03,0x01,0x03]);

    sendCommand('192.168.86.163', [0x00,0x11,0x03,0x08,0x00]);

    sendCommand('192.168.86.163', [0x00,0x11,0x03,0x05,0x99,0x00,0x00]);

    }

    Reply Like 1
    • Girts Burnauskis 

      0x99 is 153 :-)

      try 0xff  which is 255

      and try 0x64 which is 100

      0x indicates it’s a hexadecimal.

      Reply Like 1
    • Niels de Klerk  :) silly me didn't think about hex values :)

      How to set delay between commands?

      Could there be a hint to discover DS ip?

      //initialize ip addresses try { InetAddress lightsUnicastIP = InetAddress.getByName("192.168.1.100"); //reserved

      IP address of DreamScreen/SideKick InetAddress broadcastIP = InetAddress.getByName("255.255.255.255"); //default,

      works for many routers

      } catch (UnknownHostException e) {}

      Reply Like
    • Niels de Klerk Thank you you for pointing me to right direction... I found it on nodejs descriptions.

      What do you think about IP discovery example in PDF, (I did post it before as text) it dose not work in node.js as is but...

      Could it be modified and used in node.js?

      Reply Like
    • Girts Burnauskis yeah I'm sure it's possible. you might want to make some packet captures using the APP to see how it works. then use the nodeJS script to mimic the packets and handling. I have used both the PDF and the packet captures made by Oswin Peters to create the example script you are using now.

      Maybe James Long can make the guy's of DreamScreen send me a pack (As he has already contact with the DS guys). then I'm able to write a Node library and a NEEO driver. As we say in dutch (freely translated) you never know how a cow catches a haze.

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Niels de Klerk I can try - what do you need them to provide exactly so I can make sure I ask them the right question?

      Reply Like
    • James Long I would need a set to test and develop for.

      Reply Like
    • Niels de Klerk I have new PDF from DS

      Reply Like
    • Girts Burnauskis you’re almost there.

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Niels de Klerk Girts Burnauskis have they updated that to show how to find the DS from its IP? It looks different to what I got from them a while back.

      I can see what they'd say about providing a test unit although I'm just a customer to them really! Let me ask them their thoughts.

      Reply Like
    • James Long Looks like they are specifically interested in iOS and Android dev's as the documentation is explained in both mobile languages. I Don't know why but somehow I had the idea that you where close with them.

      My bet is currently on Girts to finish the last discovery part. If he doesn't succeed I'll try to get in contact with the DS team and ask them for a unit.

      I think they have an interesting product that I would love to have and develop for but I can't just buy everything I like. 

      Reply Like 2
    • Niels de Klerk I think, that is the main reason nobody owns all liked products. Isn't it? 😂

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Niels de Klerk I've been in touch with them a few times and owned both of their products. We had some LED troubleshooting to do with the old version and they were extremely helpful and open to feedback too. The owners are friendly and for a small team, the product is good. 

      I've dropped through an email to Victor who I was in contact with before. He's a really good guy. I'll see what he says and let you know. I can put you in touch with him direct too.

      I love the DreamScreen. Probably (sorry) my favourite Kickstarter project. The WIFI HD version is so much better than the BT version. The quality has been improved a lot. They have a 4K version too but my TV isn't 4K so no need. It makes such a difference to the viewing experience though. If you do get it, it's worth checking the adhesive is right for your TV back - if the back of the TV is textured swap the adhesive out for the one that is more like foam (I'd have to check the exact one on the forums).

      Reply Like
  • Girts Burnauskis Niels de Klerk well I go out for a few hours into the blizzard to do some photography and look what's waiting when I get back - amazing Girts, well done. I can't wait to try this. If it's all ok we can post it on the Dreamscreen forums too for any other NEEO users in there (it may just be me and you)

    Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • 1
      • Reported - view

      Girts Burnauskis Niels de Klerk it works! After putting in the IP address of some unidentified item on my network, it wasn't initially working...but that's because it wasn't the Dreamscreen. Girts was most helpful in pointing me to the right IP address and I can confirm that I can control the Dreamscreen. Need to see about adding it to recipes etc now. Thank you Girts and Niels for your work on this - wish I could have done more!

      Reply Like 1
  • Girts Burnauskis Niels de Klerk I can confirm this works well as it is currently.

    I have an unusual issue which I can't quite figure out. In order to run the driver on my Synology NAS, I have to use a Terminal Client called Putty on my PC. I use this to log into my NAS and then just NodeJS to run the driver.

    This all works fine and I can see the code working on my PC as buttons are pressed. However, if I close Putty the driver no longer works. It has to be open with the the Driver running or it isn't working.

    I have had a look through the Synology forums for something along the lines of "keeping a NodeJS script/driver running when terminal client is closed" but I can't find anything. Do either of you know if this is something that can be fixed by changing some of the Driver code or will it require a different way of running the NodeJS driver on the Synology constantly? Doing it from my PC is fine but I would love to have a solution that is just running continuously on the NAS.

    Paul Spee you mentioned you had the SDK on a NAS all ok. Any ideas on this?

    Reply Like
    • James Long I know there is a special key combination that lets the script run even when closing the ssh connection but ideally this isn't what you want because stopping the script or maintaining it would also be difficult.

      Synology has a Task scheduler that can run scripts for you. I'm unfamiliar with the exact details but this will give you something to dig into.

      after a reboot of the brain (i.e. because of a firmware update) the SDK driver will need to be restarted. keep that in mind. 

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Niels de Klerk thanks Niels, will look at the Task Scheduling option - perhaps I can set it to run during afternoon/evening hours when people are most likely to be using the AV equipment?

      After rebooting the brain, I will just have to run the command "node index.js" again? Or will I have to reinstall the SDK?

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Niels de Klerk I have found the Task Scheduling function and I think it could work but there does not seem to be a way of having a Task run between two times i.e. to stop the task at any point. You can schedule something to start, say everyday at 12, but then it looks like it'll just run unless the script has a stop switch code. As you mention, this could be a potential problem as you may not be able to stop the driver or maintain it (in the case of this DS one). I will keep looking.

      I'm ok for now to run the driver from my PC via Putty as it's on most of the day anyway. There is time to look for a work around. 

      Reply Like
  • Patrick and Andy just wanted to copy you in on this now that there is a functioning and working driver for the DreamScreen. Would be great for it to be considered for inclusion as an official driver at some point so that it can be installed on the brain directly. Appreciate this will likely require a bit more work by Girts Burnauskis in order to find a way to identify the IP of Dreamscreens and things like that. It's getting there though and I can confirm that it works when the driver is running on my Synology NAS

    Reply Like
    • James Long as of now it’s to soon for inclusion. The driver must first operate with discovery.

      Reply Like
      • James Long
      • James_Long
      • 10 mths ago
      • Reported - view

      Niels de Klerk understood, just putting it on the radar for the future

      Reply Like
reply to topic
Like8 Follow