NEWS
Bad besetzt Erkennung und dann Licht an
-
Hallo.
Ich bin ganz neu auf diesem Gebiet Blocky unterwegs.
Einfache An aus Schaltungen usw fuktionieren ganz Gut.
Jetzt möchte ich mein Bad inteligent machen.Wenn ich es betrete soll das Licht angehen und wenn ich es veralasse soll es ausgehen.
Natürlich wenn ich es betreten habe und mich länger nicht bewege soll das Licht an bleiben (Badewanne)Hierfür habe ich jeweils einen Xiaomi Aqara Tür und Bewegungsmelder im Einsatz.
Jetzt habe ich das Problem das ich es nicht schaffe meine Logik bei Blocky zu Integrieren
Hier mal meine Gedanken
Wenn Tür auf und Bewegung erkannt = Licht an
Wenn Tür zu und Bewegung erkannt = Besetzt (Licht wurde ja oben schon eingeschaltet)
Wenn Tür zu und nicht Besetzt = Licht ausIch habe dort für die Besetzt und nicht Besetzt Erkennung einen Zähler Tür auf eingebaut da dieses ja größer als 1 sein muss wenn ich nicht mehr drinnen bin.
Der Bewegungsmelder Ändert auch erst nach 60 sec wieder seinen Status also bleibt das Licht immer für mindestens 60 sec an was ja auch gut ist.
Später soll noch zusätzlich rein
Wenn Tür auf und Bewegung nicht mehr erkannt = Licht aus (Hier sind es ja beim Bewegungsmelder die 60sec bis zur Änderung)
Hier mal mein momentanes Blocky.
Momentan schaltet es nur noch ein aber nicht mehr aus.
Es wird auch kein Besetzt mehr erkannt.Hoffe mal das jemand anderes schon einmal diese Idee hatte und eine Lösung kennt.
Danke
Atredis

var T_C3_BCr_auf, Last_Motion_Zeit, Bad_Besetzt; on({id: "mihome.0.devices.magnet_158d0002ca1368.state"/*Is opened*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true) { T_C3_BCr_auf = (typeof T_C3_BCr_auf == 'number' ? T_C3_BCr_auf : 0) + 1; } }); on({id: new RegExp('mihome\\.0\\.devices\\.magnet_158d0002ca1368\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.no_motion'), change: "any"}, function (obj) { Last_Motion_Zeit = parseFloat('mihome.0.devices.sensor_motion_aq2_158d0002e2e584.no_motion'); if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, true); console.log('Erstes einschalten'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true && Bad_Besetzt == false) { Bad_Besetzt = true; console.log('Besetzt'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == false && Bad_Besetzt == false) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, false); console.log('Licht aus'); } if (T_C3_BCr_auf > 1 && Last_Motion_Zeit > 59) { Bad_Besetzt = false; T_C3_BCr_auf = 0; console.log('Bad Besetzt zurücksetzen'); } }); -
Hallo.
Ich bin ganz neu auf diesem Gebiet Blocky unterwegs.
Einfache An aus Schaltungen usw fuktionieren ganz Gut.
Jetzt möchte ich mein Bad inteligent machen.Wenn ich es betrete soll das Licht angehen und wenn ich es veralasse soll es ausgehen.
Natürlich wenn ich es betreten habe und mich länger nicht bewege soll das Licht an bleiben (Badewanne)Hierfür habe ich jeweils einen Xiaomi Aqara Tür und Bewegungsmelder im Einsatz.
Jetzt habe ich das Problem das ich es nicht schaffe meine Logik bei Blocky zu Integrieren
Hier mal meine Gedanken
Wenn Tür auf und Bewegung erkannt = Licht an
Wenn Tür zu und Bewegung erkannt = Besetzt (Licht wurde ja oben schon eingeschaltet)
Wenn Tür zu und nicht Besetzt = Licht ausIch habe dort für die Besetzt und nicht Besetzt Erkennung einen Zähler Tür auf eingebaut da dieses ja größer als 1 sein muss wenn ich nicht mehr drinnen bin.
Der Bewegungsmelder Ändert auch erst nach 60 sec wieder seinen Status also bleibt das Licht immer für mindestens 60 sec an was ja auch gut ist.
Später soll noch zusätzlich rein
Wenn Tür auf und Bewegung nicht mehr erkannt = Licht aus (Hier sind es ja beim Bewegungsmelder die 60sec bis zur Änderung)
Hier mal mein momentanes Blocky.
Momentan schaltet es nur noch ein aber nicht mehr aus.
Es wird auch kein Besetzt mehr erkannt.Hoffe mal das jemand anderes schon einmal diese Idee hatte und eine Lösung kennt.
Danke
Atredis

var T_C3_BCr_auf, Last_Motion_Zeit, Bad_Besetzt; on({id: "mihome.0.devices.magnet_158d0002ca1368.state"/*Is opened*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true) { T_C3_BCr_auf = (typeof T_C3_BCr_auf == 'number' ? T_C3_BCr_auf : 0) + 1; } }); on({id: new RegExp('mihome\\.0\\.devices\\.magnet_158d0002ca1368\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.no_motion'), change: "any"}, function (obj) { Last_Motion_Zeit = parseFloat('mihome.0.devices.sensor_motion_aq2_158d0002e2e584.no_motion'); if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, true); console.log('Erstes einschalten'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true && Bad_Besetzt == false) { Bad_Besetzt = true; console.log('Besetzt'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == false && Bad_Besetzt == false) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, false); console.log('Licht aus'); } if (T_C3_BCr_auf > 1 && Last_Motion_Zeit > 59) { Bad_Besetzt = false; T_C3_BCr_auf = 0; console.log('Bad Besetzt zurücksetzen'); } }); -
Hallo.
Ich bin ganz neu auf diesem Gebiet Blocky unterwegs.
Einfache An aus Schaltungen usw fuktionieren ganz Gut.
Jetzt möchte ich mein Bad inteligent machen.Wenn ich es betrete soll das Licht angehen und wenn ich es veralasse soll es ausgehen.
Natürlich wenn ich es betreten habe und mich länger nicht bewege soll das Licht an bleiben (Badewanne)Hierfür habe ich jeweils einen Xiaomi Aqara Tür und Bewegungsmelder im Einsatz.
Jetzt habe ich das Problem das ich es nicht schaffe meine Logik bei Blocky zu Integrieren
Hier mal meine Gedanken
Wenn Tür auf und Bewegung erkannt = Licht an
Wenn Tür zu und Bewegung erkannt = Besetzt (Licht wurde ja oben schon eingeschaltet)
Wenn Tür zu und nicht Besetzt = Licht ausIch habe dort für die Besetzt und nicht Besetzt Erkennung einen Zähler Tür auf eingebaut da dieses ja größer als 1 sein muss wenn ich nicht mehr drinnen bin.
Der Bewegungsmelder Ändert auch erst nach 60 sec wieder seinen Status also bleibt das Licht immer für mindestens 60 sec an was ja auch gut ist.
Später soll noch zusätzlich rein
Wenn Tür auf und Bewegung nicht mehr erkannt = Licht aus (Hier sind es ja beim Bewegungsmelder die 60sec bis zur Änderung)
Hier mal mein momentanes Blocky.
Momentan schaltet es nur noch ein aber nicht mehr aus.
Es wird auch kein Besetzt mehr erkannt.Hoffe mal das jemand anderes schon einmal diese Idee hatte und eine Lösung kennt.
Danke
Atredis

var T_C3_BCr_auf, Last_Motion_Zeit, Bad_Besetzt; on({id: "mihome.0.devices.magnet_158d0002ca1368.state"/*Is opened*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true) { T_C3_BCr_auf = (typeof T_C3_BCr_auf == 'number' ? T_C3_BCr_auf : 0) + 1; } }); on({id: new RegExp('mihome\\.0\\.devices\\.magnet_158d0002ca1368\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.no_motion'), change: "any"}, function (obj) { Last_Motion_Zeit = parseFloat('mihome.0.devices.sensor_motion_aq2_158d0002e2e584.no_motion'); if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, true); console.log('Erstes einschalten'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true && Bad_Besetzt == false) { Bad_Besetzt = true; console.log('Besetzt'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == false && Bad_Besetzt == false) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, false); console.log('Licht aus'); } if (T_C3_BCr_auf > 1 && Last_Motion_Zeit > 59) { Bad_Besetzt = false; T_C3_BCr_auf = 0; console.log('Bad Besetzt zurücksetzen'); } }); -
@Atredis
Wenn man die Logik vereinfacht?Wenn Bewegung erkannt: Licht an
Wenn keine Bewegung UND Tür auf: Licht ausDas würde doch alle Eventualitäten abdecken... sogar das Einschlafen in der Wanne :-)
???
-
Apropo Badewanne:relaxed:
Anwesenheitserkennung nach Badewannenprinzip -
@Muchul
Verstehe die Frage nicht.Ich gehe ins Bad: Bewegung wird erkannt: Licht geht an
Ich mache die Tür zu: Licht bleibt an ob ich mich bewege oder nicht
Ich gehe aus dem Bad raus (und muss die Tür offen lassen): Licht geht aus nachdem keine Bewegung mehr erkannt wird.So hätte ich es gedacht.
Oder in "Code"
Wenn Objekt Bewegung wurde geändert...
Wenn Bewegung = true dann Licht an
Sonst Wenn Tür=auf dann Licht ausfertig. Denke ich zu simpel?
Ich gehe davon aus, dass, wenn ich das Bad verlasse die Bewegung erkannt wird. -
@Muchul
Verstehe die Frage nicht.Ich gehe ins Bad: Bewegung wird erkannt: Licht geht an
Ich mache die Tür zu: Licht bleibt an ob ich mich bewege oder nicht
Ich gehe aus dem Bad raus (und muss die Tür offen lassen): Licht geht aus nachdem keine Bewegung mehr erkannt wird.So hätte ich es gedacht.
Oder in "Code"
Wenn Objekt Bewegung wurde geändert...
Wenn Bewegung = true dann Licht an
Sonst Wenn Tür=auf dann Licht ausfertig. Denke ich zu simpel?
Ich gehe davon aus, dass, wenn ich das Bad verlasse die Bewegung erkannt wird. -
Hallo.
Ich bin ganz neu auf diesem Gebiet Blocky unterwegs.
Einfache An aus Schaltungen usw fuktionieren ganz Gut.
Jetzt möchte ich mein Bad inteligent machen.Wenn ich es betrete soll das Licht angehen und wenn ich es veralasse soll es ausgehen.
Natürlich wenn ich es betreten habe und mich länger nicht bewege soll das Licht an bleiben (Badewanne)Hierfür habe ich jeweils einen Xiaomi Aqara Tür und Bewegungsmelder im Einsatz.
Jetzt habe ich das Problem das ich es nicht schaffe meine Logik bei Blocky zu Integrieren
Hier mal meine Gedanken
Wenn Tür auf und Bewegung erkannt = Licht an
Wenn Tür zu und Bewegung erkannt = Besetzt (Licht wurde ja oben schon eingeschaltet)
Wenn Tür zu und nicht Besetzt = Licht ausIch habe dort für die Besetzt und nicht Besetzt Erkennung einen Zähler Tür auf eingebaut da dieses ja größer als 1 sein muss wenn ich nicht mehr drinnen bin.
Der Bewegungsmelder Ändert auch erst nach 60 sec wieder seinen Status also bleibt das Licht immer für mindestens 60 sec an was ja auch gut ist.
Später soll noch zusätzlich rein
Wenn Tür auf und Bewegung nicht mehr erkannt = Licht aus (Hier sind es ja beim Bewegungsmelder die 60sec bis zur Änderung)
Hier mal mein momentanes Blocky.
Momentan schaltet es nur noch ein aber nicht mehr aus.
Es wird auch kein Besetzt mehr erkannt.Hoffe mal das jemand anderes schon einmal diese Idee hatte und eine Lösung kennt.
Danke
Atredis

var T_C3_BCr_auf, Last_Motion_Zeit, Bad_Besetzt; on({id: "mihome.0.devices.magnet_158d0002ca1368.state"/*Is opened*/, change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true) { T_C3_BCr_auf = (typeof T_C3_BCr_auf == 'number' ? T_C3_BCr_auf : 0) + 1; } }); on({id: new RegExp('mihome\\.0\\.devices\\.magnet_158d0002ca1368\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.state' + "|" + 'mihome\\.0\\.devices\\.sensor_motion_aq2_158d0002e2e584\\.no_motion'), change: "any"}, function (obj) { Last_Motion_Zeit = parseFloat('mihome.0.devices.sensor_motion_aq2_158d0002e2e584.no_motion'); if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == true && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, true); console.log('Erstes einschalten'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == true && Bad_Besetzt == false) { Bad_Besetzt = true; console.log('Besetzt'); } if (getState("mihome.0.devices.magnet_158d0002ca1368.state").val == false && getState("mihome.0.devices.sensor_motion_aq2_158d0002e2e584.state").val == false && Bad_Besetzt == false) { setState("HomeKit.0.Licht_Bad_Shelly"/*Licht Bad Shelly*/, false); console.log('Licht aus'); } if (T_C3_BCr_auf > 1 && Last_Motion_Zeit > 59) { Bad_Besetzt = false; T_C3_BCr_auf = 0; console.log('Bad Besetzt zurücksetzen'); } });