[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM

Begonnen von neumann, 22 Februar 2018, 18:00:22

Vorheriges Thema - Nächstes Thema

t1me2die

Moin liebe Leute, ich habe mal eine Frage bzgl. des Aqara Bewegungsmelder.
Konnte den Bewegungsmelder erfolgreich einbinden.
Der Status wird auch zuverlässig übertragen.
Mir ist aufgefallen, dass er erst 90Sekunden nachdem er keine "motion" mehr erkannt hat dann "no_motion" sendet.
Kann man die Dauer von 90 Sekunden ändern?

Hier ein List vom Device:

Internals:
   CFGFN     
   DEF        unknown 0x00158d000272bf05
   FRIENDLYNAME
   IODev      MQTT
   MODEL      unknown
   NAME       aqara_Motion1
   NOTIFYDEV  unknown 0x00158d000272bf05
   NR         225
   SID        0x00158d000272bf05
   STATE      no_motion
   TYPE       XiaomiMQTTDevice
   READINGS:
     2018-11-13 22:15:40   illuminance     0
     2018-11-13 22:15:40   linkquality     34
     2018-11-13 22:15:40   lux             0
     2018-11-13 22:15:40   occupancy       false
     2018-11-13 22:15:40   state           no_motion
     2018-11-13 22:15:40   state1          nomotion
     2018-11-13 22:15:40   transmission-state incoming publish received
   message_ids:
   subscribe:
     zigbee2mqtt/0x00158d000272bf05
     xiaomi/0x00158d000272bf05/#
   subscribeExpr:
     ^zigbee2mqtt\/0x00158d000272bf05$
     ^xiaomi\/0x00158d000272bf05.*$
   subscribeQos:
     xiaomi/0x00158d000272bf05/# 0
     zigbee2mqtt/0x00158d000272bf05 0
Attributes:
   IODev      MQTT
   room       XiaomiMQTTDevice
   stateFormat state
   userReadings state1:.* {(ReadingsVal($name,"state","") =~ /no_motion/)?"nomotion":"motion"}


Gruß
Mathze

bull1t

Hallo Mathze,
soweit ich das mitbekommen habe sendet der Bewegungsmelder nur alle 60s oder 90s seinen Status. Und diese Zeit kann wohl nicht geändert werden.Bitte korrigieren wenn ich das falsch verstanden habe.Heisst eine schnellere "neue Bewegungserkennung" ist nicht möglich.Ich hab das Problem bei mir im Flur gelöst in dem ich die Flurlampe mit einem on-for-timer >2Minuten versehen habe.
Gruss bUll1t

bull1t

Für alle welche die IKEA Tradfri LED Birnen ansteuern wollen meine Attribute für die entsprechenden Birnen aufgrund einer pm-Nachfrage diesbezüglich.

webCmd  on:off: brightness
widgetOverride brightness:colorpicker,BRI,0,10,250

Einen Farbwechsel oder Farbtemperaturwechsel hab ich leider nicht hinbekommen.Hoffe kann dem einen oder anderen so helfen.

t1me2die

#543
Zitat von: bull1t am 15 November 2018, 11:17:50
Hallo Mathze,
soweit ich das mitbekommen habe sendet der Bewegungsmelder nur alle 60s oder 90s seinen Status. Und diese Zeit kann wohl nicht geändert werden.Bitte korrigieren wenn ich das falsch verstanden habe.Heisst eine schnellere "neue Bewegungserkennung" ist nicht möglich.Ich hab das Problem bei mir im Flur gelöst in dem ich die Flurlampe mit einem on-for-timer >2Minuten versehen habe.
Gruss bUll1t

Moin bull1t, nachdem ich nun etwas getestet habe, habe ich es auch verstanden.
Der Bewegungsmelder meldet alle 60 Sekunden "motion", falls Bewegung weiterhin erkannt wird.
Der Bewegungsmelder meldet nach 90 Sekunden "no_motion", falls keine Bewegung erkannt wurde.

Meine eigentliche Idee von unten kann ich damit über den Haufen werfen.
Nur, wenn ich den Bewegungsmelder "aufwache" indem ich den seitlichen Knopf drücke, sendet er tatsächlich bei jeder Bewegung ein Event.
Nachdem er wieder "eingeschlafen" ist, tritt mein oben beschriebenes Zeitfenster in Kraft.

Schade, dass man auf den Zeitraum wohl keinen Einfluss hat, oder hat noch jemand anderes einen Tipp?

Gruß
Mathze

Moin bull1t, der Bewegungsmelder sendet bei jeder Bewegung ein neues Event, auf jeden Fall wird die Uhrzeit im Reading bei jeder Bewegung aktualisiert.
Nur das Event "no_motion" bekomme ich frühstens 90 Sekunden nach dem letzten "motion" Event mitgeteilt.
Wenn man diese "blindTime" aber nicht umstellen kann, dann muss ich mal schauen, ob ich hier evtl. mit einem "at" arbeite und die blindTime nach jedem "motion" Event selber berechne.

@Edit:
Von der Überlegung her, sendet der Sensor bei jeder Bewegung ein Event mit neuem Zeitstempel. Hierauf kann man nun mit einem notify oder doif triggern:


define n_<Gereatename> notify <Gereatename>:motion { control_blindTime_PIR($NAME) }


In dem Gereatename sollte event-on-update-reading gesetzt sein, damit das notify immer getriggert wird

attr <Gereatename> event-on-update-reading state


Das o.g. notify ruft nun folgende Prozedur in der 99_myUtils auf:

use Date::Parse;
use POSIX qw/strftime/;

# ------------------------------------------------------------------------ #
# Aqara Mijia Xiaomi Motion Sensor BlindTime berechnen                     #
#                                                                          #
# Zum setzen der blindTime einfach folgende Zeile anfeuern:                #
# setreading Gereatename blindTime <Anzahl_Sekunden>                       #
# Standardmaeßig werden 15Sekunden genommen, falls keine Zeit gesetzt wurde#
# ------------------------------------------------------------------------ #
sub control_blindTime_PIR($)
{
my ($devicename) = @_;
my $action    = ReadingsVal($devicename,"state","");
my $blindTime = ReadingsNum($devicename,"blindTime",15);
$blindTime    = strftime("\%H:\%M:\%S", gmtime($blindTime));

if ($action eq "motion")
{ if (Value("t_blindTime") ne "")
{ fhem "delete t_blindTime"; }
fhem "defmod t_blindTime at +$blindTime setreading $devicename state no_motion";
}
}


Diese setzt, solange nicht im Gereatenamen ein Reading "blindTime" vorhanden ist die blindTime auf 15 Sekunden.

Das setzen der blindTime kann man über die FHEM Kommandozeile via:


setreading Gereatename blindTime <Anzahl_Sekunden>


machen.
Nun sollte man wie gewohnt auf das Reading "state" irgendwelche Aktionen ausführen können, z.B. Lampe an-/ausschalten usw.
Funktionalität teste ich heute Abend. Hab es gerade nur grob hingeschrieben  :)

Gruß
Mathze

Tabularasa

Hallo. Ich habe den CC2530 als Router geflasht und per FTDI in ein USB Netzteil gesteckt. Muss ich denn nochwas konfigurieren? Er ist über das  MQTT2 Modul angebunden. Aber irgendwie weiß ich nicht wie das Teil funktionieren soll. Weil die restlichen Geräte sind immernoch mit dem Coordinator (CC2531) verbunden. Wenn ich einen Sensor außerhalb der Reichweite platziere verbindet dieser sich auch nicht mit dem Router. Hier mal ein list
Internals:
   CHANGED   
   DEVICETOPIC ZigbeeRouter
   IODev      MQTT
   LASTInputDev MQTT
   MQTT_MSGCNT 1411
   MQTT_TIME  2018-11-15 20:25:23
   MSGCNT     1411
   NAME       ZigbeeRouter
   NR         230
   STATE      true
   TYPE       MQTT2_DEVICE
   Helper:
     DBLOG:
       linkquality:
         DBLogging:
           TIME       1542226349.20249
           VALUE      7
       state:
         DBLogging:
           TIME       1542226349.20249
           VALUE      true
   READINGS:
     2018-11-15 20:25:23   linkquality     173
     2018-11-15 20:25:23   state           true
Attributes:
   DbLogExclude .*
   IODev      MQTT
   event-on-change-reading state
   model      RouterCC2530
   readingList zigbee_pi:zigbee2mqtt/0x00124b001b7b2aed:.* { json2nameValue($EVENT) }


Weiß jemand Rat oder kann mir sagen was ich noch prüfen kann? Danke

mark79

Zitat von: Tabularasa am 15 November 2018, 20:33:35
Weiß jemand Rat oder kann mir sagen was ich noch prüfen kann? Danke

Du kannst das hier mal probieren, um zu schauen, ob sich ein Device mit dem Router verbindet: https://forum.fhem.de/index.php/topic,84790.msg848840.html#msg848840

Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Tabularasa

Ja den Beitrag hatte ich auch schon gesehen. Selbst wenn ich Mosquitto als externen Server hätte, wüsste ich glaube nicht wie ich das machen soll. Geschweigen denn mit dem MQTT2 Server... :'(

mark79

Das geht bei beiden, bei MQTT2 geht noch einfacher mit einem extra Device in Fhem: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Installation_von_zigbee2mqtt

Dort kannst du dann graphviz in einem Dropdown Menü auswählen und er erstellt dir die Network Map.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

StephanFHEM

#548
Ich habe bei mir jetzt auch ein paar Aqara-Sensoren mit einem CC2531 laufen. Das klappt soweit auch sehr gut. Ich habe dazu jetzt nur zwei Fragen:
1. Hab hier mal DeConz laufen gehabt um für die Ikea-Lampen ein Firmware-Update zu machen. Geht so ein OTA-Update der Komponenten auch mit CC2531?
2. Die Verbindung zu weiter entfernten Sensoren ist sehr schlecht. Hab schon rausgefunden, dass sie kein Mesh-Netz aufbauen und man dafür Teile an der Steckdose benötigt. Da ich hier noch eine Lightify-Steckdose ungenutzt liegen habe würde mich interessieren, ob die mit dem CC2531 auch funktioniert und das Mesh-Netzwerk richtig erweitern würde. Möchte ungern einen extra Repeater oder eine Glühbirne nutzen (die laufen alle über HUE)

Tabularasa

Zitat von: mark79 am 16 November 2018, 20:55:52
Das geht bei beiden, bei MQTT2 geht noch einfacher mit einem extra Device in Fhem: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Installation_von_zigbee2mqtt

Dort kannst du dann graphviz in einem Dropdown Menü auswählen und er erstellt dir die Network Map.

Das geht leider auch irgendwie nicht. Hab Raspi, zigbee2mqtt und graphviz installiert/akualisiert, aber im tmp Ordner ist nix.
Hier mal ein Auszug
zigbee2mqtt.service - zigbee2mqtt
   Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-11-17 11:29:32 CET; 4min 30s ago
Main PID: 507 (npm)
   CGroup: /system.slice/zigbee2mqtt.service
           ├─507 npm
           ├─668 sh -c node index.js
           └─669 node index.js

Nov 17 11:33:25 FHEM-Stretch npm[507]:   zigbee2mqtt:warn 2018-11-17 11:33:25 Cannot handle MQTT message on 'zigbee2mqtt/bridge/networkmap' with data 'graphviz\'

mark79

#550
@Tabularasa https://forum.fhem.de/index.php/topic,84790.msg855713.html#msg855713

EDIT: ich habe den Wiki Eintrag editiert und die Backslashes am ende der Zeile ( \ )entfernt, wenn du dir das noch mal neu dort raus kopierst, sollte es gehen.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Tabularasa

So, neu kopiert und Befehl ausgeführt. Keine Datei im tmp Ordner :-\ Nur zum Verständnis... Es geht um den im Hauptpfad enthaltenen tmp Ordner?
Es wurde aber im zigbee_pi ein neues reading und neue readingslist angelegt...
MQTT2_zigbee_pi graphviz: digraph G {
MQTT2_zigbee_pi readingList zigbee_pi:zigbee2mqtt/bridge/networkmap/graphviz:.* graphviz

mark79

Dann weiß ich im Moment leider auch erstmal nicht weiter, wenn graphviz installiert ist, sollte das Bild mit der Networkmap im Hauptpfand im /tmp Ordner liegen.
Mit MQTT2 habe ich das noch nicht ausprobiert, sondern über die Methode mit mosquitto_pub über die SSH Console:
https://forum.fhem.de/index.php/topic,84790.msg848840/topicseen.html#msg848840

Ich kann das hier mit MQTT2 auch nicht testen, bin erst Montag wieder bei meinem Testsystem, dann probiere ich das aus. Aber vielleicht meldet sich bis dahin noch jemand anders... :)

Ansonsten versuche doch einfach mal, die Methode aus meinen Link. Du brauchst nur zwei Putty Consolen zu starten, oder irgendeinen anderen SSH Clienten, mit dem du dich auf dem Fhem Server einloggst.

Dann startest du in der ersten Console das hier, vorher natürlich die "mqtt-server-ip" durch deine FHEM/MQTT Server IP ersetzen:
mosquitto_sub -h mqtt-server-ip -C 1 -t zigbee2mqtt/bridge/networkmap/graphviz | sfdp -Tpng | display -

und in der anderen Console das hier:
mosquitto_pub -h mqtt-server-ip -t zigbee2mqtt/bridge/networkmap -m graphviz
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

Mave

Moin zusammen,

ich hab im Zusammenhang mit zigbee2mqtt Probleme mit den Batterieständen.

Einige meiner Xiaomi Devices zeigen auch mit neuen Batterien einen Level von lediglich 75% an. Dadurch geht das Reading LowBat auf Low und ich bekomme ständig Batteriewarnungen.

Gibt es eine Möglichkeit, das LowBat erst später auf Low gehen zu lassen?

Vielen Dank.

Tabularasa

Zitat von: mark79 am 18 November 2018, 01:11:42
Dann weiß ich im Moment leider auch erstmal nicht weiter, wenn graphviz installiert ist, sollte das Bild mit der Networkmap im Hauptpfand im /tmp Ordner liegen.
Mit MQTT2 habe ich das noch nicht ausprobiert, sondern über die Methode mit mosquitto_pub über die SSH Console:
https://forum.fhem.de/index.php/topic,84790.msg848840/topicseen.html#msg848840

Ich kann das hier mit MQTT2 auch nicht testen, bin erst Montag wieder bei meinem Testsystem, dann probiere ich das aus. Aber vielleicht meldet sich bis dahin noch jemand anders... :)

Ansonsten versuche doch einfach mal, die Methode aus meinen Link. Du brauchst nur zwei Putty Consolen zu starten, oder irgendeinen anderen SSH Clienten, mit dem du dich auf dem Fhem Server einloggst.

Dann startest du in der ersten Console das hier, vorher natürlich die "mqtt-server-ip" durch deine FHEM/MQTT Server IP ersetzen:
mosquitto_sub -h mqtt-server-ip -C 1 -t zigbee2mqtt/bridge/networkmap/graphviz | sfdp -Tpng | display -

und in der anderen Console das hier:
mosquitto_pub -h mqtt-server-ip -t zigbee2mqtt/bridge/networkmap -m graphviz

Erstmal schönen Dank, dass du das so gut mit mir durchgehst :) ich warte dann doch lieber bis Montag, weil ich mosquitto garnicht installiert habe ::) oder brauche ich das nicht dafür?