NEWS
Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly
-
Versuch mal dieses hier:
-
Guten Morgen,
habe das heute morgen mal kurz probiert vor der Arbeit aber offenbar hat es nicht funktioniert.Ich habe den Eindruck,dass der Tastendruck meist nicht vom ioBroker registriert wird.
In der Xiaomi App wir er erkannt und auch im Log verbucht.
Ich habe die Xiaomi Sensoren alle über das "MiHome" Objekt eingebunden.
Grundsätzlich würde es mich ja nicht wundern, wenn der Button prinzipiell zu "schnell" klickt aber für andere macht das hier ja keine Probleme.
Ich fange gerade erst mit iobroker an und kann nicht ausschließen, dass ich was falsch mache.
Nils
-
@jmeister79
Sind die beiden Trigger zur gleichen Zeit aktiv?
Sehe gerade das sind ja sogar 3 Trigger und dann noch Trigger in Trigger.
Das kann nicht funktionieren. -
Hi,
Das sind zwei screenshots.
Habe zwei unterschiedliche Ansätze versucht.
Nils
-
@jmeister79 sagte in Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly:
Habe zwei unterschiedliche Ansätze versucht.
Ok, also die Version mit Trigger in Trigger kannst Du schonmal vergessen.
Was ist "Simple click" für ein Datenpunkt? -
@rantanplan
Danke das hab ich mi gedacht.Also Simple Click ist der Datenpunkt des Tasters.
Der Hat Simple Click, Long Click und Double Click.
Alle haben das gleiche unzuverlässige verhalten in meinem Script.ID: click
Name: Simple click
state: state
Rolle: button
Raum: Hobbyraum
Wert: falseBrauchst du mehr infos?
Ich denke die ganze Zeit daran, dass das signal evtl so kurz ist, dass ioBroker das garnicht mitbekommt wenn sich der zustand kurz ändert, das scheint das sporadische verhalten zu erklären. also müsste ich die abtastrate des mi home objektes erhöhenGruß
Nils -
nochmal ganz blöd gefragt, woran erkenne ich ob das skript richtig läuft?
-
@jmeister79 sagte in Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly:
nochmal ganz blöd gefragt, woran erkenne ich ob das skript richtig läuft?
Schau Dir mal den "debug output" Baustein an. Damit schreibst Du ins Log und kannst Informationen mitgeben.
Einer der wichtigsten Bausteine in Blockly! -
@jmeister79 sagte in Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly:
Also Simple Click ist der Datenpunkt des Tasters.
Der Hat Simple Click, Long Click und Double Click.
Alle haben das gleiche unzuverlässige verhalten in meinem Script.Taster sind immer so eine Sache.
Du musst wissen, wie Dein Taster reagiert. Suche die Datenpunkte in "Objekte" und schau Dir dort an was passiert wenn Du den Taster betätigst. Es gibt welche, die gehen wieder von "true" auf "false" und andere die bleiben auf "true".
Endsprechend musst Du Deinen Trigger anpassen. -
@rantanplan
wenn ich debug output oben drüber hänge, kommt das dann zyklisch oder einmalig?bei mir kommt es einmalig.
hätte jetzt zyklisch im log erwartet. -
@jmeister79 sagte in Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly:
@rantanplan
wenn ich debug output oben drüber hänge, kommt das dann zyklisch oder einmalig?bei mir kommt es einmalig.
hätte jetzt zyklisch im log erwartet.Alles was außerhalb eines Triggers ist, wird nur einmalig bei Scriptstart ausgeführt.
Der sollte also schon innerhalb des Triggers sein.z.B. am Anfang "debug output Hey ich habe getriggert aktuelle Zeit ist xx:xx Triggerwert ist abcd.
Innerhalb einer Bedingung "debug output Bedingung xy erfüllt"Der sollte schon an den Punkten stehen, mit denen man den Programmablauf kontrollieren kann.
Und dann mit aussagefähigen Informationen. Sonst macht es keinen Sinn.Ich gebe zu der Information immer noch "" mit. Also " Hey ich habe getriggert.......".
Wenn ich dann unter Log den Filter mit "***" setzte, bekomme ich nur meine Infos angezeigt und kann eine Langzeitbeobachtung machen.
Wenn das Script fehlerfrei läuft, kann man die Bausteine deaktivieren. -
danke dir, soweit laufen meine skripte alle.
aber es liegt wohl daran, dass der schalterzustand wohl so übersehen wird.Werde mich heute abend nochmal intensiver dran setzen
-
@jmeister79 sagte in Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly:
aber es liegt wohl daran, dass der schalterzustand wohl so übersehen wird.
Kann ich mir nicht vorstellen. Wahrscheinlich triggerst Du den falschen Datenpunkt oder triggerst falsch.
-
Ich musste den Adapter für MiHome neu starten und jetzt funktioniert er viel zuverlässiger, aber oft auch nicht oder stark verzögert. Werde versuchen die Xiaomi Geräte über Zigbee einzubinden.
Danke für Eure Tipps.
Nils
-
Ok, jetzt langsam komm ich auf touren.
Habe nochmal ne Frage zu den Triggern:Ein Blockly PRogramm läuft ja per se nur einmal nach Start durch wie ich das jetzt verstehe.
Wie genau funktionieren da die Trigger? Kann ich auch auf Logik triggern oder nur auf Systemobjekte?
Wenn ich mir zB eine Boolsche Variable in Javascript anlege und auf WAHR triggere, läuft das dann einmal (also steigende Flanke) oder solange sie WAHR ist.
Das ist alles etwas schwammig.Nils
-
@jmeister79 sagte in Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly:
Ok, jetzt langsam komm ich auf touren.
Habe nochmal ne Frage zu den Triggern:Ein Blockly PRogramm läuft ja per se nur einmal nach Start durch wie ich das jetzt verstehe.
Wie genau funktionieren da die Trigger? Kann ich auch auf Logik triggern oder nur auf Systemobjekte?
Wenn ich mir zB eine Boolsche Variable in Javascript anlege und auf WAHR triggere, läuft das dann einmal (also steigende Flanke) oder solange sie WAHR ist.
Das ist alles etwas schwammig.Nils
Das ist eigentlich ganz einfach. Triggern kannst du nur auf Datenpunkte im Objektbaum, nicht auf variablen die du im Script angelegt hast.
Die Datenpunkte im Objektbaum werden von den verschiedenen Quellen verändert oder aktualisiert. Wenn keine weiteren Bedingungen angegeben sind dann wird der trigger immer aktiviert wenn ein Objekt aktualisiert wurde.Es gibt dabei prinzipiell 2 Arten von Bedingungen.
- die die auf den Wert des Objektes abzielen, sprich die nur triggern wenn der Wert nach der Aktualisierung einen bestimmten Wert hat
- die die auf das "acknowledge" achten, sprich ob der Wert nur gesetzt oder gesetzt und bestätigt wurde.
Auf variablen die du in Blockly's als "variable" anlegst kannst du nicht Triggern, die kannst du nur abfragen.
ich hoffe der Schwamm wird etwas fester
A.
-
@Asgothian Danke dir für die tolle Erklärung.
Das habe ich mir fast gedacht, dass es mit der aktualisierung zusammenhängt. Man sieht in manchen tutorials, dass explizit darauf getriggert wurde. Und dann darunter nochmal auf WAHR FALSCH abgefragt wurde.
Nocheinmal zum genauen Verständnis, der Code wird dann nach Aktualisierung auch nur einmal durchlaufen also wie eine positive Flankenerkennung
Ich denke ichw erde zukünftig direkt codieren, blockly ist für den Eisntig ganz nett aber sobald es komplizierter wird führ ich mich anderswo wohler.
In meinem Fall hab ich die Variablen als Objekte definiert.Ich versuche gerade in meinem Hobbyraum mittels des Türsensors und eines Bewegungsmelders eine Anwesenheitserkennung zu realisieren um Vitrinenbeleuchtung und Luftentfeuchter zu steuern, da ist das mit der Ausschaltverzögerung in Blockly für mich irgendwie nicht realisierbar. Habe mir jetzt mir der CRON Lösung geholfen, geht ist aber nicht sehr sauber, hätte da lieber n Countdown der durch Bewegung immer wieder von vorne gestartet wird. Leider klappt des aber nicht. Ist aber auch ein anderes Thema.
Ich denke dies hier ist gelöst.Letztendlich kann man aber sagen, dass der Mihome Kram etwas launisch ist was die Weitergabe von Aktualisierungen angeht, das scheint manchmal mit dem Wetter zwischen China und hier zusammen zu hängen.
Das ist bei allen Sensoren so, manchmal reagieren sie sofort, manchmal gar nicht, manchmal verzögert. Darum will ich Zigbee versuchen -
@jmeister79 sagte in Xiaomi Mi Smartswitch funktioniert nur sporadisch in Blockly:
Ich versuche gerade in meinem Hobbyraum mittels des Türsensors und eines Bewegungsmelders eine Anwesenheitserkennung zu realisieren um Vitrinenbeleuchtung und Luftentfeuchter zu steuern, da ist das mit der Ausschaltverzögerung in Blockly für mich irgendwie nicht realisierbar.
Das sollte im Blockly recht problemlos gehen. Der Schlüsselbegriff dazu ist "timeout". Dazu gibt es extra Blockly Elemente. Der Übliche weg ist:
- Event triggern
- Aktoren einschalten
- nachschauen ob es schon einen (benannten) timeout gibt, wenn ja, anhalten
- (benannten) timeout setzen, wann wieder abgeschaltet werden soll
Ich bin grad im Büro und kann da kein Blockly zusammen bauen.
Der Punkt "Schalten mit Verzögerung" ist nur dann sinnvoll, wenn die Aktion auf jeden Fall passieren muss. (Bsp. Rollo hoch - Aktor anschalten, Aktor ausschalten mit 5 sek. Verzögerung)
Mit Zigbee hab ich gute Erfahrungen gemacht. Ich hab einiges an Xiaomi Sensoren im Einsatz due stabil laufen.
A.
-
Guten morgen,
danke für den hinweis, ichw erde das mal ausprobieren, bin neulich etwas daran verzweifelt weil ich das in blockly nicht sooo gazn verstehe.
Ich habe es jetzt erstmal durch eine Besonderheit im Xiaomi Bewegungsmelder gelöst. Der hat eine Variable die die Zeit seit der letzten Bewegung bis 600s hochzählt.
Die tut ja genau das was ich suche. Da spare ich mir den Timer.Ich werde bei Gelegenheit mal das Blockly vorstellen, finde es ganz spannend. Habe noch Handmodes für den Entfeuchter eingebaut usw.
Nils