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

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

Vorheriges Thema - Nächstes Thema

oelidoc


CoolTux

Zitat von: oelidoc am 11 September 2018, 20:20:56
Danke CoolTux - tolle Unterstützung wie immer.
Gruß
oelidoc

Ist gefixt und morgen per Update verfügbar
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


Clue

Guten Abend,

leider ist der Fehler wieder aufgetaucht und das Gerät bzw. der Server hängt wieder im Fehlerzustand. Erster Timeout ist im Eintrag von 2018.09.13 20:12:02 zu sehen. Davor lief er bis zu Abfrage bei 2018.09.13 20:10:21 ohne Vorkommnisse.


2018.09.13 20:10:21 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - Run CreateParamGatttool with mod: write
2018.09.13 20:10:21 5: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - Write XiaomiBTLESens_ExecGatttool_Run FlowerCareWohnzimmerKastanie|C4:7C:8D:66:CA:A0|write|0x33|A01F
2018.09.13 20:10:21 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - stateRequestTimer: Call Request Timer
2018.09.13 20:10:21 5: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Run: call gatttool with command: gatttool -i hci0 -b C4:7C:8D:66:CA:A0 --char-write-req -a 0x33 -n A01F 2>&1 /dev/null and loop 0
2018.09.13 20:10:32 5: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Run: gatttool loop result Characteristic value was written successfully
2018.09.13 20:10:32 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Run: gatttool result Characteristic value was written successfully
2018.09.13 20:10:32 5: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Done: gatttool return string: FlowerCareWohnzimmerKastanie|C4:7C:8D:66:CA:A0|ok|write|0x33|{"gtResult":"no data response"}
2018.09.13 20:10:32 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - Run CreateParamGatttool with mod: read
2018.09.13 20:10:32 5: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - Read XiaomiBTLESens_ExecGatttool_Run FlowerCareWohnzimmerKastanie|C4:7C:8D:66:CA:A0|read|0x35
2018.09.13 20:10:32 5: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Run: call gatttool with command: gatttool -i hci0 -b C4:7C:8D:66:CA:A0 --char-read -a 0x35 2>&1 /dev/null and loop 0
2018.09.13 20:12:02 1: Timeout for XiaomiBTLESens_ExecGatttool_Run reached, terminated process 799
2018.09.13 20:12:02 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - WriteReadings: Readings were written
2018.09.13 20:12:02 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Aborted: The BlockingCall Process terminated unexpectedly. Timedout
2018.09.13 20:44:22 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - Run CreateParamGatttool with mod: write
2018.09.13 20:44:22 5: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - Write XiaomiBTLESens_ExecGatttool_Run FlowerCareWohnzimmerKastanie|C4:7C:8D:66:CA:A0|write|0x33|A01F
2018.09.13 20:44:22 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - stateRequestTimer: Call Request Timer
2018.09.13 20:44:22 3: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Run: another gatttool process is running. waiting...
... usw....
018.09.13 20:45:51 3: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Run: another gatttool process is running. waiting...
2018.09.13 20:45:52 1: Timeout for XiaomiBTLESens_ExecGatttool_Run reached, terminated process 808
2018.09.13 20:45:52 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - WriteReadings: Readings were written
2018.09.13 20:45:52 4: XiaomiBTLESens (FlowerCareWohnzimmerKastanie) - ExecGatttool_Aborted: The BlockingCall Process terminated unexpectedly. Timedout


Vielleicht gibt das ja einen Hinweis. Ich wäre für einen Tipp bzw. jegliche Hilfe sehr dankbar.

Viele Grüße
Christoph

CoolTux

Leider kann ich Dir da nichts neues sagen.
Aus irgendeinem Grund bleibt der gatttool Aufruf bei Dir als Prozess bestehen was eigentlich nicht sein dürfte.

Gib mal bitte in der FHEMWEB Kommandozeile version ein und poste hier die Ausgabe.
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

Clue

Wir finden schon eine Lösung :). Hier die Versionsnummern:


Latest Revision: 17334

File                  Rev   Last Change

fhem.pl               17329 2018-09-12 07:03:11Z rudolfkoenig
96_allowed.pm         17179 2018-08-20 15:49:33Z rudolfkoenig
90_at.pm              17252 2018-09-02 09:35:58Z rudolfkoenig
98_autocreate.pm      15620 2017-12-16 18:10:36Z rudolfkoenig
57_Calendar.pm        16742 2018-05-15 19:20:16Z neubert
98_DOIF.pm            17291 2018-09-06 18:37:03Z Damian
98_dummy.pm           16965 2018-07-09 07:59:58Z rudolfkoenig
91_eventTypes.pm      14888 2017-08-13 12:07:12Z rudolfkoenig
72_FB_CALLLIST.pm     16433 2018-03-18 08:20:35Z markusbloch
72_FB_CALLMONITOR.pm  16709 2018-05-08 20:14:58Z markusbloch
01_FHEMWEB.pm         17307 2018-09-09 13:42:47Z rudolfkoenig
92_FileLog.pm         17181 2018-08-20 17:23:26Z rudolfkoenig
98_help.pm            15223 2017-10-10 10:14:24Z betateilchen
98_HTTPMOD.pm         16951 2018-07-06 18:02:15Z StefanStrobel
02_HTTPSRV.pm         16874 2018-06-15 17:18:55Z neubert
98_JsonList2.pm       17230 2018-08-30 13:03:48Z rudolfkoenig
91_notify.pm          17225 2018-08-29 12:34:29Z rudolfkoenig
59_PROPLANTA.pm       17079 2018-08-02 17:47:03Z tupol
33_readingsGroup.pm   16299 2018-03-01 08:06:55Z justme1968
00_SONOS.pm           16658 2018-04-25 06:00:12Z Reinerlein
21_SONOSPLAYER.pm     16478 2018-03-24 22:47:43Z Reinerlein
99_SUNRISE_EL.pm      16632 2018-04-17 19:00:21Z rudolfkoenig
50_TelegramBot.pm     16382 2018-03-11 13:20:55Z viegener
98_telnet.pm          17116 2018-08-10 11:52:49Z rudolfkoenig
59_Twilight.pm        16005 2018-01-27 06:05:51Z igami
99_Utils.pm           15713 2017-12-28 11:01:02Z rudolfkoenig
98_version.pm         15140 2017-09-26 09:20:09Z markusbloch
74_XiaomiBTLESens.pm  17328 2018-09-12 06:40:06Z CoolTux
10_ZWave.pm           17186 2018-08-20 20:10:55Z rudolfkoenig
00_ZWDongle.pm        17186 2018-08-20 20:10:55Z rudolfkoenig

Blocking.pm           16985 2018-07-15 14:08:15Z rudolfkoenig
Color.pm              11159 2016-03-30 16:08:06Z justme1968
Common.pm             10759 2016-02-07 20:00:12Z rleins
ControlPoint.pm       16658 2018-04-25 06:00:12Z Reinerlein
DevIo.pm              16623 2018-04-15 18:44:05Z rudolfkoenig
FritzBoxUtils.pm      16691 2018-05-05 17:11:26Z rudolfkoenig
HttpUtils.pm          17034 2018-07-27 05:47:13Z rudolfkoenig
Info.pm                  28 2008-11-09 01:08:44Z dsully
myUtilsTemplate.pm     7570 2015-01-14 18:31:44Z rudolfkoenig
myUtilsTemplate.pm     7570 2015-01-14 18:31:44Z rudolfkoenig
myUtilsTemplate.pm     7570 2015-01-14 18:31:44Z rudolfkoenig
myUtilsTemplate.pm     7570 2015-01-14 18:31:44Z rudolfkoenig
myUtilsTemplate.pm     7570 2015-01-14 18:31:44Z rudolfkoenig
RTypes.pm             10476 2016-01-12 21:03:33Z borisneubert
SetExtensions.pm      17100 2018-08-07 07:40:20Z rudolfkoenig
SubProcess.pm         14334 2017-05-20 23:11:06Z neubert
TcpServerUtils.pm     17124 2018-08-11 06:54:58Z rudolfkoenig
ZWLib.pm              17186 2018-08-20 20:10:55Z rudolfkoenig

doif.js                    15546 2017-12-03 09:57:42Z Ellert
f18.js                     17318 2018-09-10 16:25:56Z rudolfkoenig
fhemweb.js                 17308 2018-09-09 13:43:37Z rudolfkoenig
fhemweb_readingsGroup.js   15189 2017-10-03 17:53:27Z justme1968


Ich habe übrigens geupdated nachdem du den Bug von oelidoc gefixt hast, aber bevor der Fehler aufgetreten ist.

Hier eine Liste meiner laufenden Prozesse kurz nachdem einem get sensorData

root@Heimhirn:/# ps -u fhem                                                                                                                                                                                         
  PID TTY          TIME CMD                                                                                                                                                                                         
  733 pts/0    00:04:10 perl                                                                                                                                                                                       
  741 pts/0    00:21:52 perl                                                                                                                                                                                       
  804 pts/0    00:00:00 sh                                                                                                                                                                                         
  805 pts/0    00:00:00 gatttool                                                                                                                                                                                   
21070 pts/0    00:00:00 perl


Der Prozess mit der PID 21070 ist derjenige der den Timeout bekommt. Der Prozess 805 bleibt immer bestehen. Welchen Prozess müsste ich denn killen damit es weiterläuft?

Grüße
Christoph

CoolTux

Du müsstest den 805 killen.

Ansonsten sehen die Versionen gut aus. Welche Linuxdistribution hast Du?
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

Clue

Ich habe Ubuntu 16.04 in einem Docker Container auf einem Qnap NAS laufen.

Nachdem ich den 805er gekillt habe geht es wieder.

CoolTux

Klingt erstmal ok. Hast Du noch andere Fehlermeldungen in Verbindung mit BlockingCall oder Blocking.pm?
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

Clue

Nur "ExecGatttool_Aborted: The BlockingCall Process terminated unexpectedly. Timedout" innerhalb dieses Monats.

So wie ich es verstanden habe sollte


delete($hash->{helper}{RUNNING_PID});


in jedem Fall den Prozess killen oder? Soll ich mal lokal hier in "XiaomiBTLESens_ExecGatttool_Aborted" nen Log ausgeben lassen? Wie sollte der aussehen um sinnvolle Infos zu bekommen?

Edit: Oder woanders falls hilfreich natürlich :).

CoolTux

Zitat von: Clue am 15 September 2018, 13:34:38
Nur "ExecGatttool_Aborted: The BlockingCall Process terminated unexpectedly. Timedout" innerhalb dieses Monats.

So wie ich es verstanden habe sollte


delete($hash->{helper}{RUNNING_PID});


in jedem Fall den Prozess killen oder? Soll ich mal lokal hier in "XiaomiBTLESens_ExecGatttool_Aborted" nen Log ausgeben lassen? Wie sollte der aussehen um sinnvolle Infos zu bekommen?

Edit: Oder woanders falls hilfreich natürlich :).

Das killt die geforkte FHEM Instanz die dann eigentlich gatttool mit killen sollte.
Kannst Du gerne 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

Clue

Dann tobe ich mich mal aus, am besten lernt man durchs Debuggen :). Melde mich sobald ich ein paar mehr Infos habe.

Grüße
Christoph

Edit: habe gerade mal paar Logs eingebaut um zu schauen wann PIDs erstellt und wann gekillt werden.
Mir ist dabei aufgefallen dass in Blocking.pm die Funktion BlockingKill ganz am Ende die Funktion BlockingStart ohne Eingabeargumente aufruft.


BlockingKill($)
{
  my $h = shift;

  return if($h->{terminated});

#  if($^O !~ m/Win/) {
    if($h->{pid} && $h->{pid} !~ m/:/ && kill(9, $h->{pid})) {
      my $ll = (defined($h->{loglevel}) ? $h->{loglevel} : 1); # Forum #77057
      Log $ll, "Timeout for $h->{fn} reached, terminated process $h->{pid}";
      $h->{terminated} = 1;
      if($h->{abortFn}) {
        no strict "refs";
        my $ret = &{$h->{abortFn}}($h->{abortArg},
                        "Timeout: process terminated");
        use strict "refs";

      } elsif($h->{finishFn}) {
        no strict "refs";
        my $ret = &{$h->{finishFn}}();
        use strict "refs";

      }
      delete($BC_hash{$h->{bc_pid}});
      InternalTimer(gettimeofday()+1, "BlockingStart", \%BC_hash, 0)
        if(looks_like_number($h->{pid}) && kill(0, $h->{pid})); # Forum #58867
    }
#  }
  BlockingStart();
}


Mir ergibt sich aber nicht so ganz der Sinn davon und würde nach meinem Verständnis zu meinem Fehler passen, da der ERSTE Timeout Prozess zwar korrekt beendet wird (wie im Log auch zu sehen, den ich zuvor gepostet habe), im gleichen Zug aber ein neuer Prozess erstellt der alle nachfolgenden Versuche behindert (passt dann zur Meldung "ExecGatttool_Run: another gatttool process is running. waiting...")? Die Perl Syntax ist mir aber nicht so geläufig und daher lasse ich mich gerne belehren. Habe die Zeile aber testweise auskommentiert und schaue was passiert :].

Edit2: Es hat sich bewarhheitet, dass der "BlockingStart();" im BlockingKill das Problem ist. Heute hatte ich insgesamt drei Timeouts nach denen sich der Server jedes mal wieder gefangen hat. Vorher hat jeder Timeout zu einem offenen Process geführt und jeden weiteren read dadurch blockiert.

skyline

Hallo,

ich bekomme mit den letzten Versionen auch den error-Fehler, bei Geräten (Temperatursensor) die vorher liefen.

Gruß
Marco

CoolTux

Ich bin da dran und habe entsprechende Erkenntnisse weiter geleitet.
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

Clue

Hi,

habe noch immer korrektes Verhalten nach gelegentlichen Timeouts. Auskommentieren der BlockingStart schien tatsächlich die Lösung. Dann verfolge ich das Thema mal nicht weiter und lasse es bei dir CoolTux wenn es okay ist.

Grüße
Christoph