NEWS
Briefkasten Anzeige VIS mit Xiaomi Tür-Magnetkontakt
-
Hallo Zusammen,
bin echt begeistert von dem Forum, hat mir in vielen Dingen schon super weitergeholfen.
Aktuell sitze ich gerade an der Möglichkeit, eine Info in VIS anzeigen zu können, das etwas im Briefkasten liegt.
Ich habe schon div. Sensoren von Xiaomi im Einsatz und habe mal einen Tür-Magnetkontakt in den Briefkastendeckel eingebaut. Die Idee ist, über diesen Kontakt die Info zu erhalten, das der Deckel geöffnet wurde (/wenn etwas eingeworfen wurde).
Der Sensor wechselt ja zwischen true & false.
Ich stehe jetzt nur auf dem Schlauch, wie ich mir das in VIS anzeigen lassen kann und wie ich den Status wieder manuel zurücksetzen kann. (Also z.B. ein Briefkastensymbol das sich rot färbt, sobald der Deckel einmal geöffnet wurde.)
Es gibt ja schon div. Beiträge zu dem Thema…Hauptproblem ist, das ich ein absoluter Javaneuling bin...;-).... und da nicht wirklich weiter komme.
Kann mir da einer helfen?
-
on ({id: kontakt, change: 'any', val: true}, function (obj) { setState(Icon,true);} }); on ({id: rücksetzt_knopf, change: 'any', val: true}, function (obj) { setState(Icon,false);} });
So würde ich da ganz einfach mal rangehen. Rückstellen dann mit einem Knopf in der Visu? Wenn ja mit der id rücksetz_knopf verbinden. Das Icon dann mit der Sichtbarkeit Icon verknüpfen
-
Danke für die schnelle Antwort. Hab es jetzt mal wie folgt umgesetzt:
on ({id: "mihome.0.devices.plug_1111.state"/*Socket plug*/, change: 'any', val: true}, function (obj) { setState("javascript.0.scriptEnabled.Briefkasten.Icon"/*scriptEnabled.Briefkasten.Icon*/,true);} }); on ({id: "javascript.0.scriptEnabled.Briefkasten.Reset"/*scriptEnabled.Briefkasten.Reset*/, change: 'any', val: true}, function (obj) { setState("javascript.0.scriptEnabled.Briefkasten.Icon"/*scriptEnabled.Briefkasten.Icon*/,false);} });
Irgendwas scheint da noch nicht zu stimmen. Bekomme folgende Meldung:
[error] javascript.0 script.js.Briefkasten.Briefkasten compile failed: SyntaxError: missing ) after argument list
-
Hallo,
@Misterbrot:Javaneuling `
ich bin auch Javaneuling. Hier spielen wir aber JavaScript. Ist was anderes. Bitte nicht falsch abkürzen.on ({id: "mihome.0.devices.plug_1111.state"/Socket plug/, change: 'any', val: true}, function (obj) {
setState("javascript.0.scriptEnabled.Briefkasten.Icon"/scriptEnabled.Briefkasten.Icon/,true);}
}); `
Du schaltest bei Einwurf ein Skript ein. Soll das so sein?Normalerweise solltest du ein Skript anlegen, welches ein Objekt erstellt (hier Typ boolean). Das Objekt wird dann vom Briefkasten Sensor gesetzt und zB nach einiger Zeit zurückgesetzt.
Wenn du allerdings die scriptEnabled Variable schaltest, wird das Skript an und aus geschaltet, nicht der Wert des Objektes.
Was ist das für ein Sensor, schaltet der nur auf true? Setzt er sich selbst zurück auf false,w enn der Kasten leer ist? Musst du einen Knopf drücken um einen reset auszulösen?
Schreib mal was dazu, vorher macht es keinen Sinn, ein Skript zu posten.
Kannst du nicht einfach
mihome.0.devices.plug_1111.state ````in VIS als OID verwenden? Gruß Pix
-
Also die Fehlermeldung die du bekommst sagt ja schon dass da was mit den Klammern nicht stimmt. Allerdings ist es nicht so dass eine ")" fehlt sondern eine "}" zu viel ist - und zwar die in der jeweils mittleren Zeile hinter dem Semikolon.
Ob du jetzt ein Script ein- und ausschaltest ist nicht ganz mit Sicherheit erkennbar, scheint aber so zu sein und ist natürlich wie pix schon sagt falsch.
Du solltest erstmal ein eigenes Objekt anlegen was du dann schalten und zur Anzeige nutzen kannst, z.B. so:
createState('javascript.0.Briefkasten.gefüllt', {type: 'boolean',def: false});
als erste Zeile im Code.
Schau mal ob du damit weiter kommst bzw. stell dann weitere Fragen.
-
Danke für eure Hilfe! Hab es soweit hinbekommen.
Wird der Briefkasten geöffnet, wird ein Wert fest gesetzt. Über einen Taster kann man diesen dann Manuel wieder zurücksetzen.
createState('javascript.0.Briefkasten.gefüllt', {type: 'boolean',def: false}); on ({id: "mihome.0.devices.magnetkontakt.state"/*Socket plug*/, change: 'any', val: true}, function (obj) { setState("javascript.0.Briefkasten.gefüllt"/*javascript.0.Briefkasten.gefüllt*/,true);} ); on ({id: "javascript.0.scriptEnabled.Briefkasten.Reset"/*scriptEnabled.Briefkasten.Reset*/, change: 'any', val: true}, function (obj) { setState("javascript.0.Briefkasten.gefüllt"/*javascript.0.Briefkasten.gefüllt*/,false);} );
Danke nochmals!
-
Über einen Taster kann man diesen dann Manuel wieder zurücksetzen. `
Man könnte doch noch einen zweiten an das Schloss montieren
-
Vielleicht hast du auch einen kontakt an der haustür dann kannst du es auch mit "wenn Haustür offen und briefkasten offen" dann in Visu leer anzeigen und mit " Wenn Haustür zu und Briefkasten offen" dann halt in der Visu Voll ausgeben…
Gruß Christian
-
ah stimmt,gute Idee, das wäre natürlich noch viel besser. Hab noch nen Schalter liegen. Werde ich nachher gleich mal umsetzen!
-
Fotos bitte