-
-
-
If the puck is paired, it doesn’t advertise any more. So if one device is auto connecting- they will stop it. And pulling the battery it might auto connect on re-power up. So turn off Bluetooth on all devices you have connected to.
For the boot loader mode it needs to be a particular length of time to hold the button down - it’s a kind of tricky timing thing.
-
The problem is that it will break everyone's existing configs. And anyone coming from the esp32/esp8266 world expects the board rate to be 115200, as this the the default for the device.
The issue initially was with microbit. Is it possible to attempt a connection via the set rate - and no command prompt is detected, drop to 9600 and test the connection then?
-
-
-
Get your esp8266 to do a http.get to your remote server. The IP of the request on your remote server will be your current public IP address.
Anternatively, you can use a Dynamic DNS service, like https://www.noip.com/ . They offer a free service - although you have to update every month. This means that you can use a DNS name and this name will get updated to you current IP.
You will also need to port forward on your router so that a request on your router gets forwarded to the esp8266. As @Ollie suggested on another thread - it's best to give your esp8266 a static IP based on the MAC address so you know what address to forward too.
-
-
-
function reading(timeout) { NRF.requestDevice({ timeout: timeout,filters: [{ "services": [ 'a495ff10-c5b1-4b44-b512-1370f02d74de' ]}] }).then(function(device) { console.log(device); d = new DataView(device.data); dF=d.getUint16(22); readings= { temp: (( dF -32) * 5 / 9).toFixed(1), F:dF,gravity:(d.getUint16(24)/1000.0).toFixed(3), d:device.data }; console.log(readings); return 1; }).then(function() { console.log("Done!"); }); }; reading(5000);
=undefined BluetoothDevice: { "id": "04:a3:16:9a:af:cc public", "rssi": -89, "data": new Uint8Array([26, 255, 76, 0, 2, 21, 164, 149, 187, 16, 197, 177, 75, 68, 181, 18, 19, 112, 240, 45, 116, 222, 0, 62, 3, 238, 197]).buffer, "manufacturer": 76, "manufacturerData": new Uint8Array([2, 21, 164, 149, 187, 16, 197, 177, 75, 68, 181, 18, 19, 112, 240, 45, 116, 222, 0, 62, 3, 238, 197]).buffer, "services": [ "a495ff10-c5b1-4b44-b512-1370f02d74de" ] } { "temp": "16.7", "F": 62, "gravity": "1.006", "d": new Uint8Array([26, 255, 76, 0, 2, 21, 164, 149, 187, 16, 197, 177, 75, 68, 181, 18, 19, 112, 240, 45, 116, 222, 0, 62, 3, 238, 197]).buffer } Done!
And this is from the app:
-
I've haven't taken any long term readings to see that kind of detail. The readings are instaneous and not averaged. I have noticed after a big ferment that trub can sit on the top of the tilt and alter the reading - say 6 gravity points. However rousing the fermenter resolves that which is good practice anyway. The good thing about it is another temperature reading - it seems I have a 1 degree C gradient comparing to a thermocouple at the bottom. You can tell if a ferment is stalled, and know when you are 2/3 through if you want to do a temperature rise for a diacetyl rest - some ferments this occurs far quicker than you thought it would.
-
-
-
-
Thanks Gordon.
I can now see that:
"data": new Uint8Array([
26, // Length of manufacturer data
255, // manufacturer data
76, 0, // 0x4c, 0x00, // Apple company id
2, // 0x02, // type: iBeacon
21, // 0x15, // length of remaining data164, 149, 187, 16, 197, 177, 75, 68, 181, 18, 19, 112, 240, 45, 116, 222,
// a495ff10-c5b1-4b44-b512-1370f02d74de0, 62, // major
3, 239, // minor
197 // rssi
]).buffer, -
Hi, a bit of progress. By increasing the scan I now can find the device:
NRF.findDevices(function(devices) { console.log(devices); }, 30000);
[ // Apple TV BluetoothDevice: { "id": "08:66:98:c6:75:50 public", "rssi": -90, "data": new Uint8Array([2, 1, 26, 10, 255, 76, 0, 16, 5, 1, 16, 104, 16, 8]).buffer, "manufacturer": 76, "manufacturerData": new Uint8Array([16, 5, 1, 16, 104, 16, 8]).buffer }, // Red Tilt BluetoothDevice: { "id": "04:a3:16:9a:af:cc public", "rssi": -92, "data": new Uint8Array([26, 255, 76, 0, 2, 21, 164, 149, 187, 16, 197, 177, 75, 68, 181, 18, 19, 112, 240, 45, 116, 222, 0, 62, 3, 239, 197]).buffer, "manufacturer": 76, "manufacturerData": new Uint8Array([2, 21, 164, 149, 187, 16, 197, 177, 75, 68, 181, 18, 19, 112, 240, 45, 116, 222, 0, 62, 3, 239, 197]).buffer } ]
I can connect by service, by adding the timeout of 20000:
var gatt; NRF.requestDevice({ timeout: 20000,filters: [{ "services": [ 'a495ff10-c5b1-4b44-b512-1370f02d74de' ]}] }).then(function(device) { console.log(device); return device.gatt.connect(); }).then(function(g) { gatt = g; return gatt.getPrimaryService("a495ff10-c5b1-4b44-b512-1370f02d74de"); }).then(function(service) { console.log({service:service}); }).then(function() { gatt.disconnect(); console.log("Done!"); });
=Promise: { } BluetoothDevice: { "id": "04:a3:16:9a:af:cc public", "rssi": -88, "data": new Uint8Array([2, 1, 6, 17, 6, 222, 116, 45, 240, 112, 19, 18, 181, 68, 75, 177, 197, 16, 255, 149, 164, 2, 10, 0]).buffer, "services": [ "a495ff10-c5b1-4b44-b512-1370f02d74de" ], "manufacturer": undefined, "manufacturerData": undefined } Uncaught Error: Unhandled promise rejection: Disconnected >
The
getPrimaryService
never gets fulfilled. Not sure what is going on here? There does not seem to be a way of adding a timeout?The manufacturer data in the first code block - seems to wrong - as 76 is apple and the previous devices is an apple tv- and in the 2nd block of code - it is undefined for the Tilt - so I'm wondering if the previous values are getting set?
What is data in
BluetoothDevice:
structure?Can the device name be included in the
BluetoothDevice:
structure?
-
-
I’m away at the moment so can test the tilt with the longer scan. The good things about the tilt is it also gives a temperature reading with the gravity. The downside is because it’s Bluetooth you have to be close to get a reading with your phone, unless you can use another device to proxy.
@Ollie - yes I have seen that esp8266 project - someone was also offering kit to get all the hard to find bits and the 3D printed framework- it can in at about 1/2 the cost of the tilt. It would have the advantage of being WiFi. The battery life on the tilt is not great, and uses an expensive camera battery. -
-
-
Hi,
I have a digital hydrometer - a device called Tilt.On the iphone - using the nrf scanner app - I can see:
{ kCBAdvDataIsConnectable = 1; kCBAdvDataLocalName = Tilt; kCBAdvDataServiceUUIDs = ( "A495FF10-C5B1-4B44-B512-1370F02D74DE", "A495FF10-C5B1-4B44-B512-1370F02D74DE" ); kCBAdvDataTxPowerLevel = 4; }
I try to scan from the puck:
>NRF.requestDevice({ filters: [{ name: 'Tilt' }] }).then(function(device) { : console.log(device); : }); =Promise: { } Uncaught Error: Unhandled promise rejection: No device found matching filters >
NRF.connect
takes a address - but I don't know what the address of the device is - none of the NRF apps appear to show the address.Any ideas how I can connect to this device?
-
If it's working with dio for micro python - then that's unlikely.
Do a flash erase first - there might be something in flash left over that is giving you grief.