Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Handbetrieb ermitteln

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Handbetrieb ermitteln

Scheduled Pinned Locked Moved Skripten / Logik
javascript
5 Posts 2 Posters 234 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Online
    M Online
    michihorn
    wrote on last edited by michihorn
    #1

    Hallo ich möchte wissen wann ein State per Fernbedienung und nicht per Script geändert wurde.
    Folgender Ansatz funktioniert wenn ich den DP direkt in den Objekten ändere. Leider klappt es nicht bei einer Änderung per Fernbedienung.

    const js = 'system.adapter.javascript.1'
    const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand"
    const id_RolloL ="tahoma.0.devices.Markisse_Links.states.core:DeploymentState"
    const id_RolloR ="tahoma.0.devices.Markisse_Rechts.states.core:DeploymentState"
    var text
    
    const auslöser =[id_RolloL, id_RolloR]
    
    on({ id: auslöser, change: 'any', fromNe: js, ack: false }, function (dp) {
    
        log("Handbetrieb: " + dp.state.val)
        setState(idHand, true)
        text = '\u261d\ufe0f Markiese ist per Hand gefahren worden'
        if (logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938xxx' });
    });
    
    on({ time: { hour: 23, minute: 59 } }, function () {
        setState(idHand, false);
    });
    

    Zu erwähnen wäre noch, ich habe zwei Javainstancen, [0,1]
    Gruß Michael

    Edit: Habs mal mit folgenden Satz probiert:

    on({ id: auslöser, change: 'any', fromNe: js, ack: **true** }, function (dp) {
    

    zumindest reagiert das Script nun auf die Fernbedienung, mal schauen was später bei Scriptausführung passiert.

    paul53P 1 Reply Last reply
    0
    • M michihorn

      Hallo ich möchte wissen wann ein State per Fernbedienung und nicht per Script geändert wurde.
      Folgender Ansatz funktioniert wenn ich den DP direkt in den Objekten ändere. Leider klappt es nicht bei einer Änderung per Fernbedienung.

      const js = 'system.adapter.javascript.1'
      const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand"
      const id_RolloL ="tahoma.0.devices.Markisse_Links.states.core:DeploymentState"
      const id_RolloR ="tahoma.0.devices.Markisse_Rechts.states.core:DeploymentState"
      var text
      
      const auslöser =[id_RolloL, id_RolloR]
      
      on({ id: auslöser, change: 'any', fromNe: js, ack: false }, function (dp) {
      
          log("Handbetrieb: " + dp.state.val)
          setState(idHand, true)
          text = '\u261d\ufe0f Markiese ist per Hand gefahren worden'
          if (logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+4915253938xxx' });
      });
      
      on({ time: { hour: 23, minute: 59 } }, function () {
          setState(idHand, false);
      });
      

      Zu erwähnen wäre noch, ich habe zwei Javainstancen, [0,1]
      Gruß Michael

      Edit: Habs mal mit folgenden Satz probiert:

      on({ id: auslöser, change: 'any', fromNe: js, ack: **true** }, function (dp) {
      

      zumindest reagiert das Script nun auf die Fernbedienung, mal schauen was später bei Scriptausführung passiert.

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      @michihorn
      Lass ack im Trigger weg. Bei Änderung per Fernbedienung ist ack true.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      M 1 Reply Last reply
      1
      • paul53P paul53

        @michihorn
        Lass ack im Trigger weg. Bei Änderung per Fernbedienung ist ack true.

        M Online
        M Online
        michihorn
        wrote on last edited by michihorn
        #3

        @paul53 Leider wird der DP "Hand" auch bei der Scriptausführung gesetzt. Das Script zur Überprüfung sieht nun so aus:

        var logging = true;
        const js = 'system.adapter.javascript.1'
        const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand"
        const id_RolloL ="tahoma.0.devices.Markisse_Links.states.core:TargetClosureState"
        const id_RolloR ="tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState"
        
        var text
        
        const auslöser =[id_RolloL, id_RolloR]
        on({ id: auslöser, change: 'ne', fromNe: js }, function (dp) {
            log("Handbetrieb: " + dp.state.val)
            setState(idHand, true)
            text = '\u261d\ufe0f Markiese ist per Hand gefahren worden'
            if (logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+491525393xxxx' });
        });
        
        on({ time: { hour: 23, minute: 59 } }, function () {
            setState(idHand, false);
        });
        
        paul53P 1 Reply Last reply
        0
        • M michihorn

          @paul53 Leider wird der DP "Hand" auch bei der Scriptausführung gesetzt. Das Script zur Überprüfung sieht nun so aus:

          var logging = true;
          const js = 'system.adapter.javascript.1'
          const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand"
          const id_RolloL ="tahoma.0.devices.Markisse_Links.states.core:TargetClosureState"
          const id_RolloR ="tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState"
          
          var text
          
          const auslöser =[id_RolloL, id_RolloR]
          on({ id: auslöser, change: 'ne', fromNe: js }, function (dp) {
              log("Handbetrieb: " + dp.state.val)
              setState(idHand, true)
              text = '\u261d\ufe0f Markiese ist per Hand gefahren worden'
              if (logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+491525393xxxx' });
          });
          
          on({ time: { hour: 23, minute: 59 } }, function () {
              setState(idHand, false);
          });
          
          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #4

          @michihorn sagte: Leider wird der DP "Hand" auch bei der Scriptausführung gesetzt.

          Das ist bei Rollos ein Problem: Es werden auch Zwischenpositionen gesendet. Das muss man mit einem Timeout überbrücken.

          var logging = true;
          const js = 'system.adapter.javascript.';
          const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand";
          const id_RolloL ="tahoma.0.devices.Markisse_Links.states.core:TargetClosureState";
          const id_RolloR ="tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState";
           
          var timer = null;
           
          on([id_RolloL, id_RolloR], function (dp) {
              if(!timer) {
                  let manuell = true;
                  if(dp.state.from.startsWith(js)) {
                      manuell = false;
                      timer = setTimeout(function() {
                          timer = null;
                      }, 20000); // max. Rollolaufzeit
                  }
                  log("Handbetrieb: " + manuell);
                  setState(idHand, manuell, true);
                  if(manuell) {
                      let text = '\u261d\ufe0f Markiese ist per Hand gefahren worden'
                      if (logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+491525393xxxx' });
                  }
              }
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          M 1 Reply Last reply
          0
          • paul53P paul53

            @michihorn sagte: Leider wird der DP "Hand" auch bei der Scriptausführung gesetzt.

            Das ist bei Rollos ein Problem: Es werden auch Zwischenpositionen gesendet. Das muss man mit einem Timeout überbrücken.

            var logging = true;
            const js = 'system.adapter.javascript.';
            const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand";
            const id_RolloL ="tahoma.0.devices.Markisse_Links.states.core:TargetClosureState";
            const id_RolloR ="tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState";
             
            var timer = null;
             
            on([id_RolloL, id_RolloR], function (dp) {
                if(!timer) {
                    let manuell = true;
                    if(dp.state.from.startsWith(js)) {
                        manuell = false;
                        timer = setTimeout(function() {
                            timer = null;
                        }, 20000); // max. Rollolaufzeit
                    }
                    log("Handbetrieb: " + manuell);
                    setState(idHand, manuell, true);
                    if(manuell) {
                        let text = '\u261d\ufe0f Markiese ist per Hand gefahren worden'
                        if (logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+491525393xxxx' });
                    }
                }
            });
            
            M Online
            M Online
            michihorn
            wrote on last edited by michihorn
            #5

            @paul53 sagte in Handbetrieb ermitteln:

            Okay ich test mal, hatte genau aus diesem Grund auch schon den State "tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState" [der hat nur 0 oder 100 als Wert], ausgewählt und nicht wie im ersten Script den "tahoma.0.devices.Markisse_Links.states.core:DeploymentState", bei dem es diese Zwischwerte gibt.

            Edit: Anbei mein Script, es tut was es soll:

            var logging = true;
            const js = 'system.adapter.javascript.'
            const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand"
            const id_RolloL = "tahoma.0.devices.Markisse_Links.states.core:TargetClosureState"
            const id_RolloR = "tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState"
            var text
            
            //const auslöser =[id_RolloL, id_RolloR]
            const auslöser = [id_RolloR]
            on({ id: auslöser, val: 0, fromNe: js }, function (dp) {
                log("Handbetrieb: " + dp.state.val, "info")
                setState(idHand, true)
                var text = '\u270b  Markiese von Hand eingefahren'
                sendTo('whatsapp-cmb.0', 'send', { text, phone: '+49152539xxxxx' });
            });
            
            on({ time: { hour: 23, minute: 59 } }, function () {
                setState(idHand, false);
            });
            

            Zur Erklärung, ich werte aktuell nur den DP in Zeile 5 aus, der DP hat im Zustand Markiese Eingefahren den Wert "0" ansonsten "100"
            Der DP Hand "True" dient quasi als Verriegelung gegen nochmaliges automatischen Ausfahren der Markiese.

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            907

            Online

            32.4k

            Users

            81.5k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe