RuuviTag Pro 4in1 in VanPi-Core integrieren

Hallo

ich habe mir den RuuviTag Pro 4in1 zugelegt und wollte diesen in VanPi-Core integrieren!
Dieser Pro 4in1 stellt zusätzlich noch den Luftdruck dar.
Wie/Wo kann ich diesen Druckwert in NR (Python?) erfassen/erstellen um ihn weiter zu verarbeiten um ihn dann darzustellen zu können?
Auf der Infoseite, kann ich mir den 3.Wert schon anzeigen lassen, nur der reale Messwert fehlt noch.

Gruß Peter

Moin,

im Backend im BLE Bereich, gibt es ein Gruppe mit Ruvvi. Ich meine das Skript List schon alle 4 Punkte aus, den Luftdruck müsstest du dir nur aus den daten ziehen.

Einfach mal hier ein Debug dran hängen.

Gruß Wulle

Hallo Wulle,

danke für den Hinweis! Ich bin gerade dabei mich durch den Ruuvi-Bereich durch zu forschen.

Nach meiner Findung gebe ich Dir eine Rückmeldung zu meinem Ergebnis.

Gruß Peter

Hallo Wulle,

meine Tests haben nun folgendes ergeben:

  1. Anschluss von 2*Ruuvitag Pro 3in1, Anzeige im Dashboard ok

  2. Anschluss von 2*Ruuvitag Pro 4in1, nach den Ergänzungen von “Node:Compare Tags” Bild 1, durch die gelb markierene Zeilen (ohne // Auskommentierung), Anzeige im Dashboard ok

  3. je ein Anschluss RuuviTag Pro 3in1 und 4in1,

a) markierte Zeilen (mit // Kommentiert), Anzeige Dashboard ok, Bild 2

b) nach den Ergänzungen von “Node:Compare Tags” durch die gelb markierten Zeilen (ohne // Auskommentierung), Anzeige im Dashboard leer und "Node:Compare tags meldet: function error: siehe letztes Bild.

Gibt es eine Möglichkeit, wenn, wie beim Pro 3in (pressure=0) den Fehler per (if, then else) abzufange

Ruuvi1: 3in1, Ruuvi2: 4in1

Fehlermeldung Compare Tags.

Gibt es eine Möglichkeit, wenn, wie beim Pro 3in1 (pressure=0) den Fehler per (if, then else) abzufange? Wenn möglich, dann wie?

Über eine Rückmeldung würde ich mich sehr freuen.

Gruß Peter

Du bist schon auf der richtigen Spur, du brauchst einen Null-Check.
Die Variante mit beiden RuuviTags aktiv (3in1 und 4in1) wirft den Fehler, weil versucht wird die Funktion toFixed() auf “Null” anzuwenden für die 3in1 und damit crasht die Funktion, denn toFixed() kann nur auf Zahlen (“Number”) angewandt werden.

Wenn wir also davon ausgehen, dass pressure immer entweder Null ist oder eine Nummer, kannst du einfach checken ob es eine Nummer ist und dann dementsprechend die Values setzen:

Also in beiden Zeilen:
"pressure": (typeof ruuvitag.pressure === "number") ? ruuvitag.pressure.toFixed(1) + "hPa" : "",

Dann sollte entweder der tatsächliche Wert angezeigt werden, oder ein leeres Feld, aber die Funktion crasht nicht mehr

Hallo Vincent,

Danke für die Hilfe, und es hat funktioniert!!

Gruß Peter

Hallo Peter,

ich habe, dank deines Beitrags auch meinen neuen Ruuvi 4 in 1 zum laufen gebracht. Danke!

Die Anzeige ist wie bei Dir auf dem Bild.

Aber wie hast Du dann weitergemacht, lässt Du den Luftdruck noch in anderen Fenstern anzeigen?
Muss ich das in einem anderen Flow machen?

Gruß
Roland

Du kannst doch so viele Anzeigen dahinter hängen wie du möchtest,
und in der Anzeige gibst du an auf welcher Seite sie erscheint.

Ich bin noch nicht so fit mit NodeRed…

Danke für die Info!

Was mir bezüglich des Luftdrucks noch eingefallen ist, den will ich noch umrechnen, dass er auf “Normal-Null” (Meereshöhe) umgerechnet wird, da er sonst nicht wirklich aussagekräftig ist.

Gruß
Roland

Dazu benötigst du die höhe, die kannst du eventuell aus dem gps ziehen.
Und dann geht das so.
Faustformel (für geringe Höhen, schnell & einfach)

Für Höhen bis ca. 1000 Meter gilt als grobe Näherung:

  • Der Luftdruck nimmt um ca. 1 hPa pro 10 Meter Höhenunterschied ab (bzw. zu, wenn man tiefer geht).

[image]Freie Universität Berlin

Berechnung:

  1. Berechne den Höhenunterschied in Metern (Höhe über NN).
  2. Teile den Höhenunterschied durch 10.
  3. Addiere diesen Wert zum gemessenen Luftdruck (in hPa), um auf NN zu kommen.

Beispiel:

  • Gemessener Luftdruck in 500 m Höhe: 950 hPa
  • Höhenkorrektur: 500 m / 10 = 50 hPa
  • Luftdruck auf NN = 950 hPa + 50 hPa = 1000 hPa
    :wink:ki

Ja, die Formel kenne ich, hatte es nur vergessen direkt mit einzgeben…

Mal schauen werde ich die Tage mal angehen, muss am We noch bisschen Elektro verkabeln.

Dafür fahren wir an die Mosel, hoffe ich hab alles dabei :wink:

Ich hatte nix besseres zu tun, hier regnet es in Strömen :wink:

[{"id":"4a0e027c2d05bed7","type":"ui_gauge","z":"7251fa91e7e8f813","name":"Luftdruck NN","group":"6785c9b7f3b3e0bd","order":3,"width":6,"height":6,"gtype":"gage","title":"Luftdruck NN","label":"hPa","format":"{{msg.payload}} hPa","min":"900","max":"1060","colors":["#ff0000","#00ff00","#00ff00"],"seg1":"980","seg2":"1100","diff":false,"className":"","x":990,"y":540,"wires":[]},{"id":"8d3879dca83fb2d6","type":"ui_text","z":"7251fa91e7e8f813","group":"b8db3199.f0dbe","order":19,"width":0,"height":0,"name":"Luftdruck NN","label":"Luftdruck NN","format":"{{msg.payload}}.hPa","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1150,"y":540,"wires":[]},{"id":"a041aab0780f245f","type":"function","z":"7251fa91e7e8f813","name":"Luftdruck NN","func":"let druck = msg.payload.pressure_hPa | 2;\nlet hoehe = global.get (\"GV_Höhe\");\nlet hk = hoehe/10;\nlet druckNN = druck + hk;\nmsg.payload = druckNN\n\n\nreturn msg;\n\n/*\nHöhenkorrektur: 500 m / 10 = 50 hPa\nLuftdruck auf NN = 950 hPa + 50 hPa = 1000 hPa\n*/","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":830,"y":540,"wires":[["8d3879dca83fb2d6","4a0e027c2d05bed7","68e4cef0a8851b3d"]]},{"id":"68e4cef0a8851b3d","type":"debug","z":"7251fa91e7e8f813","name":"debug 171","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":990,"y":600,"wires":[]},{"id":"6785c9b7f3b3e0bd","type":"ui_group","name":"Test","tab":"e138f72fc5a1808e","order":3,"disp":true,"width":"12","collapse":false,"className":""},{"id":"b8db3199.f0dbe","type":"ui_group","name":"Temperature","tab":"deee53a800de461d","order":4,"disp":true,"width":"6","collapse":true,"className":""},{"id":"e138f72fc5a1808e","type":"ui_tab","name":"Test","icon":"build","order":45,"disabled":false,"hidden":false},{"id":"deee53a800de461d","type":"ui_tab","name":"Info","icon":"mi-info","order":2,"disabled":false,"hidden":false}]


Ich bekomme den Druck aus eimem BME280, daher wirst du den Eingangs Payload und den get.global für die Höhe ändern müssen.

Hallo Arno,

Danke!

Möchte nicht wissen, was das Forum ohne Leute wie Dich machen würde :star_struck:

Ich werde es versuchen einzubinden. Höhenangabe bekomme ich vom Teltonika Router, der sendet alles ins MQTT und von dort holt sich auch Vanpi für die Map heraus… Ich mag auch noch irgendwann die Fahrtrichtung mit anzeigen fürs parken, dass ich sehe woher die Sonne normal kommt/steht am Tag (Bei anreise in der Nacht für Solar)

Aktuell habe ich gerade remote einen 3D Druck gestartet, für Shellys mit Wagoklemmen und Hutschienen Montage, hoffentlich wird der fertig bevor meine Partnerin los fährt.

Mit den Teilen mag ich Boiler und Co schalten und auslesen, mal schauen wie lange so ein Shelly durch hält, wobei ich bis auf den Boiler alles nur ohne Last schalten werde!

Gruß

Roland