I think, you do the right things for the right reasons.
Update with Compatibility Testing of
With
Objective : A Quick test of Digital Button Inputs.
All Inputs working fine. Easy stuff done. later for the Rotary Encoder & Comms to Arylic Device
P.S. I have deleted wiring diagram from previous post. Needed to shift the DI +1 PIN.
Great!
Looking good Kevin. Let me know if you need help with anything.
Spain, nice. That probably helps inspiration.
Things are getting real now.
Ernst thanks for reaching out to Donny, would be nice to get him on board
Brief Progress Update - Basic Wiring Done
A nice little Surprise. It seems the ANO Input Device is pretty reliable in 45 degree positions e.g. 45 degrees between up and right. With this press I get both up and right inputs simultaneously. So this opens up the table for future functional additions.
And of course now for the bittersweet news. I have to attack the tricky bit now - the communications ESP32 <<> >Arylic (using UPnP/DLNA)
If I donāt post before Xmas hope that you all have a very Merry Christmas, Kevin
We are now at the stages of āthings getting realā!
I certainly havenāt forgotten about our Project. I have been busy fixing things out here so no time to play with the interesting stuff
The Hardware is there; I just need 1 day to design and 1 day to make some code. I am hopeful for next week (back in UK) so letās say if there is no progress by 22nd January please chase and tell me off
btw, donāt worry itās going to work a treat
Kevin
Perfect & no pressure!
Any contact with our additional team member, Donny?
Hi Kevin, I have a new idea for this product. It has some limits but should be more simple for end user.
The Up2Stream V3 series and some models which support BLE assisted network configuration, it also has BLE interface for the controlling, and since youāre using the ESP platform, it has BLE integrated, so you could use this interface. You also can try to test with a BLE tool. It would be ideal for this project.
Service UUID:
0x00,0xb2,0x45,0x6d,0x49,0xf7,0x10,0x84,0xeb,0x11,0x54,0x49,0x4F,0x4B,0x41,0x52
Character UUID:
0x01,0xb2,0x45,0x6d,0x49,0xf7,0x10,0x84,0xeb,0x11,0x54,0x49,0x4F,0x4B,0x41,0x52
Protocol:
3 bytes, HEADER+TYPE+CODE
HEADER: fixed 0x41
TYPE: 0x01
for short press, 0x02
for long press
CODE:
POWER | FACTORY_RESET | 0xBF |
---|---|---|
LED_TOGGLE | N/A | 0xB2 |
MUTE | N/A | 0xBE |
SRC_USB | N/A | 0xB3 |
SRC_AUX | N/A | 0xEE |
VOL_UP | VOL_UP2 | 0xE9 |
VOL_DW | VOL_DW2 | 0xE5 |
PREV | WIFI_PREV_CH | 0xAE |
NEXT | WIFI_NEXT_CH | 0xAF |
PLAY_PAUSE | STOP | 0xEC |
SRC_OPT | N/A | 0xEF |
SRC_BT | WIFI_RESET | 0xE7 |
SRC_WIFI | WIFI_RESET | 0xE6 |
BASS_UP_COARSE | N/A | 0xB1 |
BASS_DW_COARSE | N/A | 0xB5 |
TREB_UP_COARSE | N/A | 0xF2 |
TREB_DW_COARSE | N/A | 0xF6 |
EQ_FLAT | EQ_FLAT | 0xF3 |
VB | N/A | 0xF7 |
NUM_1 | WIFI_PRESET1 | 0xB9 |
NUM_2 | WIFI_PRESET2 | 0xFA |
NUM_3 | WIFI_PRESET3 | 0xFB |
NUM_4 | WIFI_PRESET4 | 0xBD |
NUM_5 | WIFI_PRESET5 | 0xFE |
NUM_6 | WIFI_PRESET6 | 0xFF |
For example: send 0x41,0x02,0xE9
to send VOL_UP key, and it will increase the volume.
@zpl1025 Frank,
This looks interesting. As we say in English āanother way to skin the catā
Iāll add the details you posted to the functional specification and we can review when Prototype V1 is up and running. I will continue with DLNA-UPnP for this stage as that it what we agreed. If I fail to make it work I might change my mind
Moving forwards there can certainly be the same Hardware platform with 2 Firmware variants
- DLNA/UPnP - works with any DLNA Compliant Device (For a fixed basic functionality)
- BLE Interface - works with Arylic and could have a configurable functionality)
Kind Regards, Kevin
Yes, the DLNA/UPNP way would work with all device, but the BLE only works with limited devices and Arylic only.
A Brief Progress Update. I have been able to spend a few hours testing different approaches for the Device Communications.
Firstly the Device Digital Inputs is simple and I donāt really see a problem with the Encoder Inputs either. Also Outputs should be straightforward too e.g. LED Status. With an ESP32 MCU I am fairly sure I can implement Arduino or Micro Python Solution.
However the comms is the trickiest bit. What I donāt want to do is make a lot of software that just needs a lot of development time and maintenance and potential bugs. My major remarks / decision points are as follows:-
Regarding comms inside the Development Package I can create strings of DLNA Commands and manage this. However if we suddenly decide that another programming language it may be necessary then this will need constructing again. So I am thinking maybe it will be better to use something like cURL Shell Commands so it reduces the design time and makes the Comms Instructions cross platform.
The other point is that realistically a very fast way to get something working quickly is indeed to use low overhead comms like the BLE Interface suggested by @zpl1025. At the end of the day our objective it to make a cool knob control for Arylic Devices. With this in mind I would propose the following change in plan.
- Start with the BLE Interface
- Design a Solution that is also possible/easy as possible to switch comms protocol, e.g. BLE, DLNA/UPNP, HTTPAPI, UART, TCP/IP to suit.
- Work with DLNA/UPNP in the background/parallel.
Anyway guys let me know what you think.
@zpl1025 can you please confirm that the Arylic Devices are configured as a BLE Server and that the Volume Control Knob will be a Client Application ?
Regards, Kevin
P.S. To see how complicated it can become look at this piece of work https://github.com/tmittet/sonos/. It is indeed a fantastic piece of work and must have taken such a huge effort from the developer However in my Control System Days we would call this a āChocolate Factoryā, technically excellent but a little bit complicated. I have a Software Vision for this project to make it as simple and bombproof as possible
Hi Kevin, the BLE on some of Arylic devices act as peripheral, you can have quick look with BLE tool on phone. eg: LightBlue.
@zpl1025 Frank,
I have had a quick look and play around.
So I have 2 questions.
- Not familiar with this technology but it appears from this app that the Arylic PRO is the CLIENT and that the Volume KNOB (or in this case my Android Phone) is the Server ? Can you confirm your understanding of this ?
FORGET THIS QUESTION THE ARYLIC DEVICE MUST BE THE SERVER !!
You will see in my screenshot that the Service & Characteristic UUIDās do not seem like the ones you quoted in the post. Maybe I have misunderstood something here ?
Many Thanks in Advance, Kevin
Thanks Kevin for your update and Frank for response, all looking very good!
My knowledge is not that much in software and coding. Though I do agree with principles you mention Kevin. Like āprevent software that just needs a lot of development time and maintenance and potential bugsā.
Good Progress Today and I have a made a working solution using āhttpapiā with Next & Previous Tracks
- Testing with a Arylic Mini
- Music Source Playlist on Synology NAS Drive
A Log File
18:11:03.226 -> BUTTON_RIGHT
18:11:03.601 -> HTTP Response code: 200
18:11:09.603 -> BUTTON_RIGHT
18:11:09.838 -> HTTP Response code: 200
18:11:14.858 -> BUTTON_RIGHT
18:11:15.046 -> HTTP Response code: 200
18:11:19.041 -> BUTTON_LEFT
18:11:19.229 -> HTTP Response code: 200
18:11:23.218 -> BUTTON_LEFT
18:11:23.454 -> HTTP Response code: 200
Next Step
- Write and Test Code for Rotary Encoder (Volume)
- Extend Command Set
@NWT.Stuff
That looks really good Kevin. It seems the response time to the press is also good.
Keep the good work going!
I would say we have completed Prototype V0 - Proof of Concept. See Report below:-
So letās move on to Prototype V1 which I would suggest includes the 3 major omissions from V0 -
- Output Device - None
- Hook Up to WLAN (Hard Coded)
- Pair with Arylic Device (Hard Coded) ā Single Stereo device Arylic DIY PRO V3 Hard Wired on LAN
So the major points for discussion are, Which Output Device ?
ā¢ 1 x RGB LED ā e.g. Arylic Mini
ā¢ Multiple Single Colour LEDS
ā¢ Adafruit NeoPixel Ring - 5050 RGB
ā¢ Something else
P.S. I do have a āAdafruit NeoPixel Ring - 5050 RGBā if you would like me to give that a go. Otherwise I have single colour and RGB LEDs available.
Another Major Question for me is what you think about the configuring of
- Hook Up to WLAN and IP Config
- Pair with Arylic Device
I would suggest a small web server running in web browser (responsive so that OK on Phone, Tablet & PC). I have never developed apps and I donāt really want to get involved in that sort of stuff. Is the Web Server idea OK for Prototype V1 ?
In the meantime I will continue with more testing, refinements and debugging.
Looking forward to your input, Kevin
@KolfMAKER It will be easy to throw a Stereo Pair in there and test this. I donāt have 2 x MINIs though so it will another Arylic Product for testing
P.P.S. I am thinking Prototype V2 Should be
- ESP32 MCU more compact and closer to final product
- Enclosed Product in Housing, MCU, ANO Input Device & Selected Agreed Output Devices (LEDās)
- Proposed Battery Solution selected and implemented
Software Improvements, Refinements can be tested and implemented in the transition from Devices connected to terminals to a packaged prototype product. Letās say the Transition From V1 >> V2.