floyduww / meaterblockmqtt Goto Github PK
View Code? Open in Web Editor NEWMeaterBlock UDP packet to mqtt
MeaterBlock UDP packet to mqtt
Below 39F meat temp is only 1 byte not 2.
Because of signal strength number of bytes meat info is out of place.
At some point bad data gets sent to convertHex causing the program to crash. I was in the middle of a cook so couldn't spend time debugging. My guess is i have a byte offset wrong under some situation cause bad data to be sent.
Remove the retain for mqtt topics when not connected.
Add a cookName topic for mqtt. This should default to meat type if blank, or use the custom name entered on the phone.
Need a way to install the dependencies into the container
Hello,
please add support when MQTT is set to require certificate and doesn't allow anonymous users.
The thing with the user is pretty easy and i got it to work but the certificate just wont work.
I tried:
mqttc.tls_set("/ssl/fullchain.pem", tls_version=ssl.PROTOCOL_TLSv1_2)
Make a custom home assistant card for this. Currently just using lots of other cards. But a custom card can make the layout better.
add a config option for temperature scale output
Use the meat table to put the meat type instead of code in mqtt
Change this to handle raw byte input instead of converted to hex
Variable names and message groupings names need to better fit what the data is. When change in here make sure to change in the code also.
Some things are still missing. So find them.
Read the following from a config file instead of being in code:
MQTT.HOSTNAME
meaterBlockIP
tempScale (c or f)
Needs mqtt reconnect code. If the MeaterBlock is off for a while then the mqtt connection will disconnect due to inactivity. Currently have to restart the program to reconnect to mqtt
Figure out cook steps. Find either a byte that has this or whether this is done by looking at a number of fields to calculate.
Known steps (statuses) from app:
Cooking
Pull Meat off
Resting
Enjoy
Put the data into an array and manage byte offsets as array positions.
The target and ambient temps are way off once I started an actual cook.
Add checking of block and probe versions in case Apption Labs changes them and messes with the packet layout.
Meater Link (App) relays from bluetooth to wifi. This will allow for support of Meater and Meater+ devices.
Secondary devices send a broadcast on UDP 7878 to see if anyone has any data. If a Meater App (Meater Link) sees this it will send probe data directly on UDP 7878 to the secondary device.
I don't have a pi to build on and I have not had time to figure out setting up how to cross compile. Anyone else able to help with this?
Adding a path to config because i have to set paths e.g.:
file = open("/config/python_scripts/meat_table.txt", "r") but i also need to set this for the config file.
Put in a check to make sure we are reading a UDP packet from the block and not the Meater App. A temp fix is to check if packet[1][0] matches the IP of your meater block
Traceback (most recent call last):
File "./meater_reader_buf.py", line 223, in
data = s.recvfrom(1024)
BlockingIOError: [Errno 11] Resource temporarily unavailable
Seems the byte after the 30 separator after the signal byte(s) shows if the block is connected to the probe. 01 is connected, 00 is disconnected. This byte could possibly be checked and sent in as a status in a new mqtt topic for a probe. Seemed that the block kept sending all other data from the last successful update from the probe, except the count which went to 00.
add the battery/power status of the block to mqtt
I have not found other useful info in the block section to pass on.
Someone in one of the forums mentioned that Google Protocol Buffers (GPB) were being used. Now that I have researched GPB it seems that this may be the case.
Study up on this and build out a .proto file to be able to read the data. Will be much better than picking apart by the bytes.
https://developers.google.com/protocol-buffers/docs/overview
Clean up this train of thought code. It was written as I went while reverse engineering the data packets.
Show battery level better in home assistant. I think the range is 5 - 8.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.