[74_XiaomiBTLESens.pm] Xiaomi Bluetooth Sensoren FlowerSens/Thermometer

Begonnen von CoolTux, 11 Januar 2018, 15:42:45

Vorheriges Thema - Nächstes Thema

CoolTux

Besser kann es dadurch nicht werden. Ich wollte nur eine Ausgabe haben. Hast Du den auch ein Rekord gemacht oder FHEM neu gestartet?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

smurphy

Mit einen Record gemacht meinst du sicher einen neuen Wert abgerufen mit get sensordat?
Ja habe ich. Und ich habe auch das Modul neu geladen. Weil,ich die Ausgabe nicht gefunden habe, habe ich FHEM und schlussendlich sogar den raspi neu gestartet. Wo hätte denn die Ausgabe erscheinen sollen? Im FHEM.log? Es kam nichts. Deshalb habe ich den Screenshot der editierten Datei hochgeladen.

CoolTux

Ja hätte eigentlich im FHEM Log erscheinen sollen. Ich schaue nachher noch mal
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

smurphy


CoolTux

Na für Euch da sein  ;D
Also irgendwas hat sich in den letzten Wochen/Monaten geändert bei den Dingern. Gab es da ein Firmwareupdate oder so?

Ich lade mal ins Git eine neue Version.
@Invers @smurphy bitte testet ihr beide diese einmal unter den selben Umständen wie ihr aktuell testet.
https://github.com/LeonGaultier/fhem-XiaomiBTLESens/archive/master.zip

Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Invers

Hast du sehr gut gemacht. Läuft, behalte ich. :-))

Danke, super, wie immer!
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Dersch

Ich habe 2 Sensoren mit dem Modul nun seit ein paar Monaten erfolgreich am laufen.

Nun sind es aber Topfpflanzen die Außen stehen und nun rein kommen. An beiden Orten habe ich einen Pi mit Bluetooth. Beides sind FHEM2FHEM "nodes" welche Ihre Sensoren an meine Hauptinstanz von FHEM übergeben.

Nun gibt es ja das ssh attr. Kann ich in der Hauptinstanz meines FHEM (ohne Bluetooth) die beiden Sensoren via SSH einbinden? Also je nach Ort und damit anderem Pi einfach die IP ändern?

Grüße
Dirk

CoolTux

Hallo Dirk,

Wenn ich Dich richtig verstanden habe dann sollte das ohne Probleme machbar sein. Bitte lese Dir durch welche Voraussetzungen für ssh gegeben sein müssen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Tobias

Hi Dirk,
um völlig unabhängig zu sein kann ich nur empfehlen, die Daten nicht per FHEM2FHEM an die Hauptinstanz zu übergeben sondern alle Daten ins MQTT zu senden und von der Hauptinstanz per MQTT wieder einzubinden.
Damit ist man völlig von IP Adressen oder Clients losgelöst. Läuft bei mir seit einem Jahr super und stabil
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

skyline

Hab nun einen USB-Stick laufen, welcher die Error-Sache noch mal verbessert hat.
Aber es kommt trotzdem noch weiter vor.

Zitat
Zitat:CoolTux
Es wird doch im state des Devices error geschrieben wenn es Probleme gab. Du kannst gerne ein Notify darauf ansetzen und einfach das holen der Daten noch einmal anstoßen. Solltest aber einen Zähler einbauen das nach 3-4 mal nichts mehr weiter gemacht wird.

Wäre das dann so korrekt?

define TF_RETRY notify EG_TF_.*:error {
my $loops = "3";
my $sleeptime = "10";
for(my $i = 1;$i <= $loops;$i++) { fhem "sleep $sleeptime; get $NAME sensorData;" }
}

CoolTux

Nein so wird das nichts.
Du musst den Zähler als Reading hinterlegen und abfragen. Wenn das Notify wieder an Sprint und der Zähler sagen wir mal 5 ist dann soll er aufhören ab zu rufen und es erst wieder bei der normalen Zeit machen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

skyline

Wie bekomme ich das Reading denn dann wieder zurückgesetzt auf 0?
Vielleicht mit einer zusatzlichen if-Fuinktion, welche das Reading bei 5 wieder zurücksetzt?

Warum würde es denn so wie beschrieben nicht gehen?

CoolTux


for(my $i = 1;$i <= $loops;$i++) { fhem "sleep $sleeptime; get $NAME sensorData;" }


Durchlaufe dieSchleife bei i=1 anfangend genau $loop mal und zähle $i immer um eins hoch nach jedem durchlauf.
Sende bei jedem durchlauf den Befehl fhem "sleep $sleeptime; get $NAME sensorData;"
er würde also ohne zu kontrollieren ob in einem Durchlauf der Befehl mal geklappt hat hart die x Befehle hintereinander weg senden


if ( ReadingsVal($NAME,'count',1) == 5 ) {
  CommandSet(undef, $self . ' inactive');
  fhem('sleep 15; set ' . $self . ' active');
}
elsif ( ReadingsVal($NAME,'count',1) < 5 ) {
  CommandGet(undef, $NAME . ' sensorData');
  readingsSingleUpdate( $defs{$shuttersDev} , 'count', ReadingsVal($NAME,'count',1) + 1, 0 );
}


Bei Fragen einfach Fragen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

skyline

Danke!!!
Stimmt natürlich.

Würde es denn auch so gehen?
define TF_RETRY notify EG_TF_.*:error {\
my $loops = "3";\
my $sleeptime = "10";\
for(my $i = 1;$i <= $loops;$i++) { \
if ('$EVENT' eq 'error'){\
    fhem "sleep $sleeptime; get $NAME sensorData" }\
}


oder so

define TF_RETRY notify EG_TF_.*:error {\
my $loops = "3";\
my $sleeptime = "10";\
for(my $i = 1;$i <= $loops;$i++) { \
if ( ReadingsVal('$NAME', 'state', 'undef') eq 'error'{\
    fhem "sleep $sleeptime; get $NAME sensorData" }\
}


Lerne ja noch ;-)

CoolTux

Auf die schnelle würde ich sagen ist das selbe in Grün. Auch hier durchläuft er wieder die volle Anzahl an loops da $EVENT error wäre.
Davon ab ist hier $EVENT nie Error, da $EVENT aus "READING: READINGVALUE" besteht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net