HA SwitchPlate HASPone: DIY In-Wall Touchscreen Home Assistant Controller

Will open up the unit and try the reset. If I load the original TFT file, it works fine. But loading my modified version, it stops working. It would seem to be something in the TFT file that is causing the issue.

So I tried with the reset button, but didnā€™t get anything new. Actually saw less information because the output starts at one speed and then switches. Anyways, I captured the output and pulled out the part with the first HMI IN output. The first part is my modified TFT and the second is the original one.

Need to modify this desktop case so I can get to that reset button easier. :slight_smile:

Edited TFT Output

[+4.619s] SYSTEM: System init complete.
[+4.623s] MQTT IN: 'hasp/bbr_plate/status' : 'OFF'
[+4.637s] MQTT IN: 'hasp/bbr_plate/status' : 'ON'
[+4.646s] HMI IN:  0xff 0x63 0x6f 0x6d 0x6f 0x6b 0x20 0x31 0x2c 0x33 0x30 0x36 0x30 0x31 0x2d 0x30 0x2c 0x4e 0x58 0x33 0x32 0x32 0x34 0x54 0x30 0x32 0x34 0x5f 0x30 0x31 0x31 0x52 0x2c 0x31 0x34 0x32 0x2c 0x36 0x31 0x34 0x38 0x38 0x2c 0x44 0x45 0x36 0x39 0x30 0x38 0x43 0x30 0x44 0x33 0x37 0x44 0x32 0x31 0x32 0x43 0x2c 0x34 0x31 0x39 0x34 0x33 0x30 0x34 0xff 0xff 0xff
[+4.702s] HMI IN:  0x0 0x0 0x0 0xff 0xff 0xff
[+4.707s] HMI IN:  0x88 0xff 0xff 0xff
[+4.711s] HMI IN:  0x66 0x0 0xff 0xff 0xff
[+4.715s] HMI IN: [sendme Page] '0'
[+4.719s] HMI IN:  0x1a 0xff 0xff 0xff
[+4.723s] HMI IN:  0x66 0x0 0xff 0xff 0xff
[+4.727s] HMI IN: [sendme Page] '0'
[+4.894s] MQTT IN: 'hasp/bbr_plate/command/p[2].b[6].font' : '10'
[+4.901s] HMI OUT: 'p[2].b[6].font=10'
[+5.000s] HMI: sending Nextion connect request
[+5.004s] HMI OUT: connect
[+5.016s] HMI IN:  0x63 0x6f 0x6d 0x6f 0x6b 0x20 0x31 0x2c 0x33 0x30 0x36 0x30 0x31 0x2d 0x30 0x2c 0x4e 0x58 0x33 0x32 0x32 0x34 0x54 0x30 0x32 0x34 0x5f 0x30 0x31 0x31 0x52 0x2c 0x31 0x34 0x32 0x2c 0x36 0x31 0x34 0x38 0x38 0x2c 0x44 0x45 0x36 0x39 0x30 0x38 0x43 0x30 0x44 0x33 0x37 0x44 0x32 0x31 0x32 0x43 0x2c 0x34 0x31 0x39 0x34 0x33 0x30 0x34 0xff 0xff 0xff
[+5.069s] HMI IN: nextionModel: NX3224T024_011R
[+5.913s] MQTT IN: 'hasp/bbr_plate/command/page' : '1'



Original TFT Output

[+4.645s] SYSTEM: System init complete.
[+4.650s] MQTT IN: 'hasp/bbr_plate/status' : 'OFF'
[+4.666s] MQTT IN: 'hasp/bbr_plate/status' : 'ON'
[+4.673s] HMI IN:  0xff 0x63 0x6f 0x6d 0x6f 0x6b 0x20 0x31 0x2c 0x33 0x30 0x36 0x30 0x31 0x2d 0x30 0x2c 0x4e 0x58 0x33 0x32 0x32 0x34 0x54 0x30 0x32 0x34 0x5f 0x30 0x31 0x31 0x52 0x2c 0x31 0x34 0x31 0x2c 0x36 0x31 0x34 0x38 0x38 0x2c 0x44 0x45 0x36 0x39 0x30 0x38 0x43 0x30 0x44 0x33 0x37 0x44 0x32 0x31 0x32 0x43 0x2c 0x34 0x31 0x39 0x34 0x33 0x30 0x34 0xff 0xff 0xff
[+4.728s] HMI IN:  0x0 0x0 0x0 0xff 0xff 0xff
[+4.733s] HMI IN:  0x88 0xff 0xff 0xff
[+4.737s] HMI IN:  0x66 0x0 0xff 0xff 0xff
[+4.742s] HMI IN: [sendme Page] '0'
[+4.746s] HMI IN:  0x1a 0xff 0xff 0xff
[+4.750s] HMI IN:  0x66 0x0 0xff 0xff 0xff
[+4.754s] HMI IN: [sendme Page] '0'
[+4.923s] MQTT IN: 'hasp/bbr_plate/command/p[2].b[6].font' : '10'
[+4.930s] HMI OUT: 'p[2].b[6].font=10'
[+5.000s] HMI: sending Nextion connect request
[+5.004s] HMI OUT: connect
[+5.017s] HMI IN:  0x63 0x6f 0x6d 0x6f 0x6b 0x20 0x31 0x2c 0x33 0x30 0x36 0x30 0x31 0x2d 0x30 0x2c 0x4e 0x58 0x33 0x32 0x32 0x34 0x54 0x30 0x32 0x34 0x5f 0x30 0x31 0x31 0x52 0x2c 0x31 0x34 0x31 0x2c 0x36 0x31 0x34 0x38 0x38 0x2c 0x44 0x45 0x36 0x39 0x30 0x38 0x43 0x30 0x44 0x33 0x37 0x44 0x32 0x31 0x32 0x43 0x2c 0x34 0x31 0x39 0x34 0x33 0x30 0x34 0xff 0xff 0xff
[+5.073s] HMI IN: nextionModel: NX3224T024_011R

Both of those look good, up to the point that youā€™ve included. We see HASP ask the panel to identify itself (connect), and then the string starting with 0x63 0x6f 0x6d 0x6f [...] is the response with information about the panel. HASP recognizes this successfully and parses the model.

What should happen after that is a request to read p[0].b[2], but Iā€™m not seeing that on either trace, but that might be because youā€™ve chopped it off of the end of your log maybe? Can we get up to 10 seconds after boot to grab the whole log here?

I have the full start capture available, but looking at where the request for p[0].b[2] is, I see a difference. First clip is yours and second is mineā€¦

[+8.270s] MQTT IN: 'hasp/bbr_plate/command/p[2].b[5].txt' : '"May 28 "'
[+8.277s] HMI OUT: 'p[2].b[5].txt="May 28 "'
[+8.281s] MQTT IN: 'hasp/bbr_plate/command/p[2].b[7].txt' : '"Sunny "'
[+8.288s] HMI OUT: 'p[2].b[7].txt="Sunny "'
[+8.294s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.298s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.302s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.306s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.311s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.315s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.319s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.323s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.328s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.333s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.337s] HMI IN:  0x1a 0xff 0xff 0xff
[+8.341s] HMI IN:  0x1a 0xff 0xff 0xff
[+9.624s] HTTP: Sending root page to client connected from: 192.168.1.77
[+10.007s] HMI OUT: get p[0].b[2].val
[+10.011s] HMI: sending Nextion version query
[+10.016s] HMI IN:  0x71 0x2 0x0 0x0 0x0 0xff 0xff 0xff
[+10.021s] HMI IN: [Int Return] '2'
[+10.025s] HMI IN: lcdVersion '2'
[+10.028s] UPDATE: Checking update URL: http://haswitchplate.com/update/version.json
[+15.143s] UPDATE: Update check failed: connection refused
[+10.567s] MQTT IN: 'hasp/bbr_plate/command/p[2].b[5].txt' : '"May 28 "'
[+10.574s] HMI OUT: 'p[2].b[5].txt="May 28 "'
[+10.579s] MQTT IN: 'hasp/bbr_plate/command/p[2].b[7].txt' : '"Sunny "'
[+10.586s] HMI OUT: 'p[2].b[7].txt="Sunny "'
[+10.591s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.595s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.600s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.604s] HMI IN:  0x1c 0xff 0xff 0xff
[+10.608s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.613s] HMI IN:  0x1c 0xff 0xff 0xff
[+10.618s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.622s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.627s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.631s] HMI IN:  0x1a 0xff 0xff 0xff
[+10.635s] HMI IN:  0x1c 0xff 0xff 0xff
[+10.639s] HMI IN:  0x1a 0xff 0xff 0xff
[+15.229s] HMI OUT: get p[0].b[2].val
[+15.233s] HMI: sending Nextion version query
[+20.237s] HMI OUT: get p[0].b[2].val
[+20.241s] HMI: sending Nextion version query
[+25.001s] UPDATE: Checking update URL: http://haswitchplate.com/update/version.json
[+30.167s] UPDATE: Update check failed: connection refused

Letā€™s see if this will work. This is the full capture of my version.

I think I have narrowed the problem down to the Nextion editor. I took the released HMI file and changed the LCD version to 3. It uploaded fine, but the version is showing 0. What version of the editor should I be using? I downloaded the lates (1.60.2), but I remember in the past there was problems after an update to the editor.

Any chance you can share your HMI file somewhere?

Was working on a reply showing every step I took and wouldnā€™t you know it. It worked this time. (Donā€™t know where the reply went - changed to the HASP webpage and when I came back to the reply, it was gone).

So, the HASP web page is now showing LCD version 3. Going to try this again and see if things are going to work out better. If it fails again, will post the HMI and TFT files.

Okay. Was able to change the LCD version to 999 successfully. So, tried removing the pages again and it failed. I deleted pages 3-8 and 11. Renamed pages 9 and 10 as 3 and 4. Compiled with no error and uploaded through the web page. HASP is no longer responsive to commands or touch.

So I was able to delete p11, move p9 and p10 into the 3 and 4 spot and everything is still working. But when I go back and delete p8, the LCD version information goes to 0, but the display is still responsive. I am now removing p3-p7 (leaving p0, p1, p2, p9, and p10), but in the past, this has resulted in a non-responsive HASP. It seems the problem comes from deleting pages. Guess I will have to try to make my own from scratch.

Have the same issue but Iā€™m using a smart things integrated hvac.did you ever get it to where you control the heat on the plate.

this project is cool
do you think thereā€™s a way to integrate this with french standards ? the switches plates are squareā€¦ 80mm X 80mm ?

My wife and kid thinks i left them.LOL this thing is great. I dont have any idea what im doing but finaly figuring it out. Anybody out there has a config for a wled integration that is way over my head.

2 Likes

Yes. Just setting the temperature state attribute did it.

    action:
      - service: climate.set_temperature
        entity_id: "climate.thermostat"
        data_template:
          temperature: '{{ state_attr("climate.thermostat", "temperature") + 1 | int}}'

1 Like

That did it thx very much,tried just about everything else

All of the contributed stl files are here https://github.com/aderusha/HASwitchPlate/tree/master/3D_Printable_Models

(Not to say someone else might not have done one for eu, but I donā€™t see one there.)

The rear box is nearly 80mm long and 50mm wide to fit the PCB in. I donā€™t think it is going to work with an 80x80 faceplate.

EDIT: Then again if you search the thread for europ (eu is tto short) there are some options.

Nice one! Was just about to have a go - will try making this for sure. You reference having some for sale (but ages ago) - still the case?

I thought Iā€™d post about getting the media page to work with Sonos as have had an irritating experience which, as usual, turns out to be something stupid!

I had been playing around with lots of alternatives for setting up the media player sensor and reading forums re spaces, ā€™ and " marks etc. Nothing seems to work.

I had forgotten I had created a plate01 and plate02 and in the packages setup both create their own sensor. Because plate02 was the one that ā€˜wonā€™ it the artist name and artist title stayed the same as ā€œArtist Nameā€. Changing the sensor to a unique name sorted this out.

I think what I will do is create a new yaml which ā€˜centrallyā€™ defines a sensor for each of my media devices.

For the record this is now my sensor setup although it is the same as default!

sensor:
  - platform: template
    sensors:
      media_player_title2:
        value_template: '{{ states.media_player.dining_room.attributes.media_title }}'
      media_player_artist2:
        value_template: '{{ states.media_player.dining_room.attributes.media_artist }}'
      media_player_volume:
        value_template: '{{ states.media_player.dining_room.attributes.volume_level }}'

i have the v1 boards still but not got any complete units left

Do you have nest working in HA? Google recently removed the API for nest; legacy developer licenses will work but not for long. Annoying as I like my nest but want to be able to link it to HA and donā€™t really want to buy a replacement!