Neues Modul: EQ3 Bluetooth Thermostat (10_EQ3BT)

Begonnen von dominik, 12 November 2016, 11:45:15

Vorheriges Thema - Nächstes Thema

mele

Zitat von: CoolTux am 01 Juli 2019, 17:31:49
Dieses No BT device in System found ist entscheidend. Dann sollte im Reading "bluetoothDevice" auch sowas in der Art stehen. Darauf kann man triggern.

Davon war aber nichts zu sehen, nur der Wechsel von hci auf hci0, siehe angehängter Screenshot aus DBLog.

Hab nochmal Temp gewechselt, kein Fehler.
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

CoolTux

Interessant. Na beobachte mal und dann schauen wir.
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

CoolTux

Konnten zufällig noch mehr wie einer den neuen Patch testen?
Gibt es ein Zwischenergebnis?
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

mele

FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

CoolTux

Gut lassen wir es die Woche noch laufen und dann werde ich Dominik einen Patch an bieten.
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

Master_Nick

Mahlzeit ich hab gerade ein wenig Spam im Log.
Frage vorab - nutzt das Modul Dbus? Hab da nämlich gerade eine Suche nach der Herkunft von:

dbus[325]: arguments to dbus_connection_get_object_path_data() were incorrect, assertion "connection != NULL" failed in file ../../../dbus/dbus-connection.c line 5905.
This is normally a bug in some application using the D-Bus library.

  D-Bus not built with -rdynamic so unable to print a backtrace
Aborted (core dumped)



Ansonsten im Log aktuell eine Vielzahl von:
Zitat2019.07.21 00:32:25 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/10_EQ3BT.pm line 528.

Zeile 528 ->         my $hciDevice = "hci".$hash->{helper}{hcidevices}[$hash->{helper}{currenthcidevice}];

Bereich:

    #if(-x $gatttool) {
    if(defined($gatttool) and ($gatttool)) {
        my $gtResult;
        my $cmd;
        my $hciDevice = "hci".$hash->{helper}{hcidevices}[$hash->{helper}{currenthcidevice}];

        while($wait) {
            my $grepGatttool = qx(ps ax| grep -E \'gatttool -b $mac\' | grep -v grep);
            if(not $grepGatttool =~ /^\s*$/) {
                #another gattool is running
                Log3 $name, 5, "EQ3BT ($name): another gatttool process is running. waiting...";
                sleep(1);
            } else {
                $wait = 0;
            }
        }




Auch ab und an aber deutlich weniger ->
Zitat2019.07.21 00:31:21 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/10_EQ3BT.pm line 670

Zeile 670 -> readingsSingleUpdate($hash, "bluetoothDevice", "hci".$hash->{helper}{hcidevices}[$hash->{helper}{currenthcidevice}], 1);



Bereich:
                $hash->{helper}{currenthcidevice} += 1;
                my $maxHciDevices = @{ $hash->{helper}{hcidevices} } - 1;
                if($hash->{helper}{currenthcidevice} > $maxHciDevices) {
                    $hash->{helper}{currenthcidevice} = 0;
                }
                #update reading
                readingsSingleUpdate($hash, "bluetoothDevice", "hci".$hash->{helper}{hcidevices}[$hash->{helper}{currenthcidevice}], 1);
            }
            InternalTimer(gettimeofday()+3+int(rand(5)), "EQ3BT_".$workType."Retry", $hash, 0);
        }
    }

    return undef;
}
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

CoolTux

Zitat von: CoolTux am 01 Juli 2019, 14:52:57
Kann bitte jemand mit dem Problem, oder jemand der das Problem provozieren kann die angehängte Version testen?. Danke.
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

Master_Nick

#442
 ;D huch! Sorry! :-D

*EDIT* 100% besser - Danke! Das fixed beides bisher (528 und 670).
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

#443
Ich habe nun auch mal eine Änderung eingepflegt.

# v2.0.7 - 20190724
# - CHANGE: max desiredTemperature from 29.5 to 30 (which makes on available on the eq3) by Master_Nick


(Hilfe und Beschreibungen und Co alle angepasst - und hoffe keine übersehen zu haben  :) )

Das bewirkt, dass man die Ventile auf wirklich "OFFEN" fahren kann. Ich hatte dafür schon einige Anwendungsfälle als der Heizungsmonteur da war - so musste ich die nicht mehr abbauen um ganz zu öffnen (ja wahrscheinlich nur ein hauch oder evtl nix - auf programmierseite aber "etwas") Sollte soweit keinen stören. :-)

Grundlage der Version ist die  vom 01.07.2019 - 14:52 hier geposted von CoolTux.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

Mahlzeit :-)

Hat noch jemand dies hier:

PERL WARNING: Argument "on" isn't numeric in numeric lt (<) at ./FHEM/10_EQ3BT.pm line 287.


Oder befeuer ich da durch MQTT ausversehen mit einem falschen retained ;-)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

Hallo zusammen,

der Winter kommt bald wieder und ich hatte in letzter Zeit an einem Python Binding für FHEM gearbeitet. Ich habe nun testweise auch das EQ3BT Modul in Python umgesetzt.
Unterschied:
- Schedules werden ausgelesen
- Offline Anzeige wenn 30 Minuten nicht erreichbar
- Auslese von comfort/ecoTempearture (Firmware 120)
- Auslese von windowOpen Konfiguration (Firmware 120)
- Senden via Bluetooth läuft viel stabiler und schneller als mit gatttool (zumindest bei mir mit 3 Thermostaten so, eure Erfahrung wäre interessant)

Wer testen will, kann das also gerne machen, hier die Anleitung dazu:
https://github.com/dominikkarall/fhem_pythonbinding
Installation aus dem Readme ausführen und dann
define eq3 PythonModule eq3bt 00:11:....

Feedback willkommen :)
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

Das klingt gut! :-)
Danke schon mal für die Arbeit.

Ich werde es mir bei Zeiten ansehen.
Leider sind diese aktuell echt hart bemessen :-D
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

C_Herrmann

Hallo Dominik,

schön, dass du das Modul weiter entwickelst.

Ich habe versucht, einen Regler umzustellen. Dies hat leider nicht funktioniert.

1. Problem:
define pyBinding BindingsIo Python
wird nicht ausgeführt.
Nach einfügen von
use CoProcess;
in 10_BindingsIO.pm geht es.

Beim Definieren des Reglers mit
define eq3xx PythonModule eq3bt XX:XX:XX:XX:XX:XX
erhalte ich diese Fehlermeldung im STATE:
Failed to execute function Define: Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 207, in onMessage
    ret = await asyncio.wait_for(func(hash, hash['args'], hash['argsh']), 5)
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/FHEM/bindings/python/lib/eq3bt/eq3bt.py", line 53, in Define
    self.thermostat = FhemThermostat(self.logger, mac)
  File "/opt/fhem/FHEM/bindings/python/lib/eq3bt/eq3bt.py", line 183, in __init__
    super(FhemThermostat, self).__init__(mac, BTLEConnection)
  File "/opt/fhem/.local/lib/python3.7/site-packages/eq3bt/eq3btsmart.py", line 97, in __init__
    self._conn = connection_cls(_mac)
  File "/opt/fhem/FHEM/bindings/python/lib/eq3bt/connection.py", line 23, in __init__
    self._ifaces = self.get_hci_ifaces()
  File "/opt/fhem/FHEM/bindings/python/lib/eq3bt/connection.py", line 41, in get_hci_ifaces
    objects = manager.GetManagedObjects()
  File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 70, in __call__
    return self._proxy_method(*args, **keywords)
  File "/usr/lib/python3/dist-packages/dbus/proxies.py", line 145, in __call__
    **keywords)
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.46" (uid=998 pid=27330 comm="python3 FHEM/bindings/python/pythonbinding.py ") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination=":1.7" (uid=0 pid=498 comm="/usr/lib/bluetooth/bluetoothd ")


Ich hoffe, das hilft zur Fehlersuche.
FHEM auf RPi, CUL868, FHT, UNIRoll, verschiedene FS20 Komponenten, IT, Zigbee zum Testen

Master_Nick

@dominik Frage vorweg: Kann es weiterhin über SSH oder generell nicht lokale BT Stacks nutzen?
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

@C_Herrmann, danke für die Rückmeldung. CoProcess habe ich hinzugefügt. Bitte noch folgendes für Bluetooth einrichten:
/etc/dbus-1/system.d/bluetooth.conf, folgendes einfügen
  <policy user="fhem">
    <allow own="org.bluez"/>
    <allow send_destination="org.bluez"/>
    <allow send_interface="org.bluez.GattCharacteristic1"/>
    <allow send_interface="org.bluez.GattDescriptor1"/>
    <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
    <allow send_interface="org.freedesktop.DBus.Properties"/>
  </policy>

danach
sudo systemctl restart dbus

FHEM benötigt nämlich die Bluetooth Berechtigung.

Mach bitte auch noch ein "update" in FHEM, dort habe ich noch paar Fehler behoben.

@Master_Nick, aktuell nicht, da das Modul nun direkt Python Bluetooth Funktionen nutzt und keine Commandline Aufrufe. Eine Möglichkeit wäre mehrere PythonBindings laufen zu lassen, das wird aber noch nicht unterstützt. Ich werde mir das mal überlegen, weil dann könnte man generell einzelne PythonModule auf einen anderem RPi oder Server laufen lassen, das hätte schon was.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik