RuuviTag Pro Anschluss an VanPi?

Moin

Hat einer schon erfolgreich die RuuviTag Pro Sensoren am laufen bekommen ?

Könnte 4 recht günstig bekommen und würde sie wenn es möglich ist mit dem VanPi verbinden.

Hi Sascha,

die RuuviTags sind echt cool und auch größtenteils OpenSource.

Schau mal hier:

Damit sollte man sie sehr einfach einbinden können.

Viele Grüße
Karl

Hallo Karl

Habe ich richtig gesehen das Ihr den RuuviTAG Pro nun im Shop habt ?

Habt ihr eine Funktionierende Schnittstelle geschaffen ?

Das wäre mega meine Sensoren kommen morgen an.

Gruß Sascha

Erste Tests laufen und wir schauen jetzt nach Optimierungen.

Viele Grüße

1 Like


meine Ruuvi tags zeigen keine Temperatur an, kennt jemand das problem?


hier noch eine Debug node der Python datei

Alsoooo ich habe es geschafft die Ruvvi zu integrieren… ABER.
Beim Scannen sagt er immer, dass kein Ruuvi tag gefunden wird. Also habe ich immer den Knopf im Ruuvi für 10s gedrückt. dann wurde der Ruuvi gefunden. Der war aber nun im Bootloader Modus und deshalb kamen vermutlich keine Werte und somit auch der vorherige Fehler.
Sooo ich habe nun also im Dropdown Menü geschaut und dort waren sehr viele Adressen. Unter anderem auch die der zwei Ruuvi pro Tags, dass habe ich mit der Ruuvi app am Handy Rausgefunden.

Also wieder gescannt. → keine Tags Gefunden. Dann im Dropdown Menü die zwei Ruuvi Tags welche laut VANPI keine sind ausgewählt und Zack Funktioniert.

ABER es Aktuallisiert nur der Tag an Stelle 2, also welcher als letztes hinzugefügt wurde.

Die Werte des ersten Tags bleiben unverändert.
Was mache ich falsch?

@Andi Hab das hier grad mit ähnlichem Ergebnis auch gehabt. Folgendes:

Den Scanvorgang hab ich geändert, so dass er nicht mehr mit hcitool läuft, sondern mit bluetoothctl (Node 1): sudo timeout -s SIGINT 6s bluetoothctl --timeout 5 scan on

Dann hab ich Node 2 angepasst, damit für das Dropdown richtig gefiltert wird:

flow.set("ble_scan", false);

// Convert payload to a string if it's not already
let str = typeof msg.payload !== 'string' ? msg.payload.toString() : msg.payload;

// Check for any input/output errors
if (msg.rc && msg.rc.message && msg.rc.message.includes("failed: Input/output error")) {
    msg.payload = "Error while scanning, please try again! (Bluetooth port may be blocked)";
    msg.highlight = "red";
    return [msg, null];
}

// Split the input string into lines
var lines = str.split('\n');

// Filter and format lines containing "Ruuvi" in their name
var ruuviLines = lines.filter(line => line.includes("Ruuvi"))
    .map(line => {
        // Extract the MAC address and the device name
        let match = line.match(/Device ([A-F0-9:]+) (.+)/);
        return match ? `${match[1]} - ${match[2]}` : null;
    }).filter(item => item !== null);  // Filter out any null values

// If no Ruuvi devices are found, format all discovered devices as "MAC - Name" or "MAC only"
if (ruuviLines.length === 0) {
    ruuviLines = lines.map(line => {
        let match = line.match(/Device ([A-F0-9:]+) (.+)/);
        return match ? `${match[1]} - ${match[2]}` : line.match(/Device ([A-F0-9:]+)/)?.[1] || null;
    }).filter(item => item !== null);

    msg.payload = "No RuuviTags found, displaying all discovered devices";
} else {
    msg.payload = `Found ${ruuviLines.length} RuuviTag devices`;
}

// Assign the formatted device list to options
msg.options = ruuviLines;

// Prepare msg.context if a Ruuvi device was selected
if (msg.options.length > 0) {
    // Assuming we choose the first Ruuvi device for demonstration
    let selectedDevice = msg.options[0];
    
    // Extract MAC and name without leading/trailing dashes or spaces
    let parts = selectedDevice.split(" - ");
    msg.context = {
        mac: parts[0].trim(),
        ruuvi: parts[1].trim()
    };
}

// Only return results when the flow variable is true, then reset it
if (flow.get("ruuvi_scan") === true) {
    flow.set("ruuvi_scan", false);
    return [msg, msg];
} else {
    return [null, msg];
}

Dann noch Node 3 anpassen, damit die Ruuvis richtig gespeichert werden und von Python ausgelesen werden können:

msg.context = {
    "ruuvi": msg.payload.substring(20),
    "mac": msg.payload.substring(0, 17)
}
msg.payload = {}
return msg

Dann hab ich das Python Script (~/pekaway/ble_py/bleRuuvi.py) leicht verändert, findest du hier: VAN_PI/VanPi-Core-OS/data/ble_py/bleRuuvi.py at main · Pekaway/VAN_PI · GitHub

Damit läuft es bei mir zumindest stabil seit ein paar Stunden. Probier es mal aus

1 Like

Top danke
Läuft auch ihre der Änderung im Python Script.

Ich schau mal wie lang.
Gruß

1 Like

Hey,
könnte man alternativ zu den RuuviTag Shelly BLU H&T benutzen. Hat damit schon jemand Erfahrung gesammelt?
Der Shelly BLU H&T ist ein Bluetooth-Sensor mit IP54.

Grüße, Chris

Du brauchst dafür einen Shelly, der Gateway fähig ist, z.B. Shelly Gateway oder Shelly Pro etc.
Darauf kannst du dann ein Script installieren, dass die Bluetooth Signale in MQTT umwandelt, dann kannst du sie weriterverarbeiten.
Hab das selbst aber noch nicht gemacht.

Moin
Habe heute das selbe Problem gehabt.
Kein Ruuvi gefunden.
Im drop-down aber die BT ID, dann ebenfalls als unknown.

Jetzt etwas am script ändern? Das ist die beim nächsten update dann wieder alles weg?

Gruß Alex

Moin,
wann gibt es eine Lösung per Update für alle?

Habe etwas bedenken da im Scipt Änderungen vorzunehmen, nicht das ich mir etwas zerschieße und alles neu aufsetzen muss.

wenn Ihr schon eine Lösung ausgearbeitet habt die bei euch läuft, wieso dann nicht als update zur Verfrühung stellen?

Viele Grüße
Alex

Wie kann ich denn da weitere Ruuvis einstellen ? Habe aktuell 4 und kann nur 3 sehen. Danke für die Hilfe

Moin,
heute mal wieder etwas gespielt.
Den Ruuvi übers DropDown hinzugefügt. Scann geht mit dem neusten Update immer noch nicht.
Habe Temperatur und Luftfeuchte.
Aber keine Lage.
Was muss ich machen das die Daten vom Ruuvi als Lagesensor übernommen werden?