NEWS

Script läuft einfach nicht!



  • Hallo gemeinde, erneut benötige ich bin eure Hilfe bei einen Versuch ein script zu schreiben.

    ich habe bereits mit Hilfe aus diesem Forum ein Skript für die Zeitsteuerung meiner poolpumpe. nun möchte ich aber nicht, wenn ich zb mal rückspüllen möchte, das meine pumpe gerade angeht weil es im zeit script so drin ist. ich habe mir ein paar Gedanken gemacht und versucht es in einem script zu schreiben. ich möchte mit diesem anderen script einfach nur abfragen ob die pumpe läuft wenn ja soll diese ausgeschaltet werden und dazu gleich noch das gesamte script für die zeitsteuerung. ich habe einen neuen Button erstellt und wenn ich diesen drücke (true) soll halt pumpe und Skript ausgeshaltet werden und erneutes drücken des Button (false) soll das script wieder aktiviert werden.

    leider tut sich bei meinem versuch gar nichts 😕

    könnt ihr mir da bitte helfen?

    var service = getState('javascript.0.Pool.Pool_Service').val;
    var poolpumpe = getState('sonoff.0.Poolpumpe.POWER').val;
    var poolpumpe_script = getState('javascript.0.scriptEnabled.Poolpumpe').val;
    
    var pool_service = 'javascript.0.Pool.Pool_Service';
    
    createState(pool_service, {
    type: 'boolean',
    name: ' ',
    desc: ' ',
    def: ' ',
    role: 'switch'
    });
    
    function poolservice() {
        if(service === true) {
            setState(poolpumpe, false);
            setState(poolpumpe_script, false);
        }
        else {
                setState(poolpumpe_script, true);
            }
    }
    
    on('javascript.0.Pool.Pool_Servie', function(dp) {
        service = dp.state.val;
        poolservice();
    });
    

    danke grüße Axel


  • Starter

    @fischi87
    Bei setState müssen die Datenpunkte hinterlegt werden



  • @Oli danke für deine schnelle Antwort, was meinst du damit, so:?

    const idservice = getState('javascript.0.Pool.Pool_Service').val;
    const idpoolpumpe = getState('sonoff.0.Poolpumpe.POWER').val;
    const idpoolpumpe_script = getState('javascript.0.scriptEnabled.Poolpumpe').val;
    
    var service = getState(idservice).val;
    var poolpumpe = getState(idpoolpumpe).val;
    var poolpumpe_script = getState(idpoolpumpe_script);
    
    var pool_service = 'javascript.0.Pool.Pool_Service';
    
    createState(pool_service, {
    type: 'boolean',
    name: ' ',
    desc: ' ',
    def: ' ',
    role: 'switch'
    });
    
    function poolservice() {
        if(idservice) {
            setState(idpoolpumpe, false);
            setState(idpoolpumpe_script, false);
        }
        else {
                setState(idpoolpumpe_script, true);
            }
    }
    
    on('javascript.0.Pool.Pool_Servie', function(dp) {
        service = dp.state.val;
        poolservice();
    });
    

    da bekomm ich immer eine Warnung das falsch can not be found?!



  • @fischi87
    Du solltest den Service-Schalter in das Script "Poolpumpe" integrieren.

    const idservice = 'javascript.0.Pool.Pool_Service';
     
    var service = false;
    if(existsState(idservice)) service = getState(idservice).val;
    else createState(idservice, false, {
      type: 'boolean',
      name: 'Service Poolpumpe',
      role: 'switch'
    });
     
    on(idservice, function(dp) {
        service = dp.state.val;
    });
    // Die Variable service in der Pumpensteuerung auswerten
    


  • @paul53 danke für deine Antwort ih schick dir das andere script mal, könntest da mal schauen wie ich den Service Schalter integrieren kann?!

    danke dir

    var logging = true;
    
    const idpoolpumpe = getState('sonoff.0.Poolpumpe.POWER').val;
    var poolpumpe = idpoolpumpe;
    var poolstate = 'javascript.0.Pool.Pumpe_Status'
    
    createState(poolstate, {
    type: 'string',
    name: ' ',
    desc: ' ',
    def: ' ',
    role: 'value'
    });
    
    function pool () {
        (idpoolpumpe);
        if(poolpumpe) poolstate = "Ein";
        else poolstate = "Aus";
        if(logging) log(poolstate);
    }
    
    on('sonoff.0.Poolpumpe.POWER', function(dp) {
        poolpumpe = dp.state.val;
        pool();
    });
    
    schedule('0 1,5,9,13,17,21 * * *', function (dp) {    // um 6, 14, 0 Uhr auf true
        setState('sonoff.0.Poolpumpe.POWER', true);
        pool();
    });
      
    schedule('0 2,6,10,14,18,22 * * *', function (dp) {    // um 2, 8, 16 Uhr auf true
        setState('sonoff.0.Poolpumpe.POWER', false);
        pool();
    
    });
    
    pool();
    

    versteh das gerade nicht, du meinst ich sollte alles in 1 script packen? puh kannst mir da helfen 👍



  • @fischi87 sagte:

    wie ich den Service Schalter integrieren kann?!

    var logging = true;
     
    const idpoolpumpe = 'sonoff.0.Poolpumpe.POWER';
    const idservice = 'javascript.0.Pool.Pool_Service';
     
    var poolstate = "Aus"
    if(getState(idpoolpumpe).val) poolstate = "Ein";
    if(logging) log(poolstate);
    
    var service = false;
    if(existsState(idservice)) service = getState(idservice).val;
    else createState(idservice, false, {
      type: 'boolean',
      name: 'Service Poolpumpe',
      role: 'switch'
    });
    
    on(idservice, function(dp) {
        service = dp.state.val;
        if(service) setState(idpoolpumpe, false);
    });
     
    on('sonoff.0.Poolpumpe.POWER', function(dp) {
        if(dp.state.val) poolstate = "Ein";
        else poolstate = "Aus";
        if(logging) log(poolstate);
    });
     
    schedule('0 1,5,9,13,17,21 * * *', function () {
        if(!service) setState(idpoolpumpe, true);
    });
      
    schedule('0 2,6,10,14,18,22 * * *', function () { 
        setState(idpoolpumpe, false);
    });
    


  • @paul53

    wie immer besten dank 👍



  • @paul53

    hallo paul, ich muss deine überarbeitung des skripts nochmal aufgreifen.

    fehlt da nicht der createstate für das poolstate? bzw hab ich das gefühl das dieses „Ein“ „Aus“ nicht in den objekten geschrieben wird?!

    grüße



  • @fischi87 sagte:

    das dieses „Ein“ „Aus“ nicht in den objekten geschrieben wird?!

    So etwas war in Deinem Script nicht vorhanden, sondern nur das Log von "Aus"/"Ein", was mich auch gewundert hat.



  • @paul53

    doch hier: das stand mit drin

    
    var logging = true;
     
    const idpoolpumpe = getState('sonoff.0.Poolpumpe.POWER').val;
    var poolpumpe = idpoolpumpe;
    var poolstate = 'javascript.0.Pool.Pumpe_Status'
     
    createState(poolstate, {
    type: 'string',
    name: ' ',
    desc: ' ',
    def: ' ',
    role: 'value'
    });
     
    function pool () {
        (idpoolpumpe);
        if(poolpumpe) poolstate = "Ein";
        else poolstate = "Aus";
        if(logging) log(poolstate);
    }
     
    on('sonoff.0.Poolpumpe.POWER', function(dp) {
        poolpumpe = dp.state.val;
        pool();
    });
     
    schedule('0 1,5,9,13,17,21 * * *', function (dp) {    // um 6, 14, 0 Uhr auf true
         setState('sonoff.0.Poolpumpe.POWER', true);
         pool();
     });
       
     schedule('0 2,6,10,14,18,22 * * *', function (dp) {    // um 2, 8, 16 Uhr auf true
         setState('sonoff.0.Poolpumpe.POWER', false);
         pool();
      
     });
      
     pool();
    
    

    in dem script als ich dich bat den service schalter mit zu integrieren. oder ist das nicht korrekt?!



  • @fischi87 sagte:

    oder ist das nicht korrekt?!

    Nein, ist es nicht. Dann ergänze

    const idpoolstate = 'javascript.0.Pool.Pumpe_Status';
    

    und hinter if(logging) Zeile 27

        setState(idpoolstate, poolstate, true);
    


  • @paul53

    und den createstate mit am anfang, muss ja den state erstmal erstellen als string oder?



  • @fischi87 sagte:

    muss ja den state erstmal erstellen als string oder?

    Existiert der Datenpunkt nicht bereits ? Wenn Du das ursprüngliche Script einmal gestartet hattest, wurde der Datenpunkt erzeugt.



  • @paul53

    das ist richtig aber ich habe ja dein script dann verwendet und d status gelöscht nachdem mir aufgefallen ist das diese nicht mehr geändert wurde.



  • @fischi87 sagte in Script läuft einfach nicht!:

    status gelöscht

    Dann muss der Datenpunkt wieder erstellt werden. Das kann man aber auch manuell im Tab "Objekte" machen. Ansonsten hinter if(logging), Zeile 8/9

    if(!existsState(idpoolstate)) createState(idpoolstate, poolstate, {type: 'string', name: 'Status Poolpumpe', role: 'state'});
    


  • @paul53

    besten dank



  • @paul53 sagte in Script läuft einfach nicht!:
    hallo paul, ich muss dich nochmal um deine Hilfe bitten.

    ich habe jetzt für meine Zisterne etwas ähnliches geschrieben, dies funktioniert soweit auch nur das Problem ist, das das script mir den Status nicht in die Objekte schreibt. im log sehe ich das geschaltet wird und das der Status "Ein" bzw auch "Aus" geschaltet wird nur wie gesagt in den Objekten halt nicht.

    const idzisternenpumpe = 'sonoff.0.Zisternenpumpe.POWER'
    const idzisternenstatus = 'javascript.0.Zisterne.Pumpe_Status'
    
    var zisternenpumpe = getState(idzisternenpumpe).val;
    var zisternenstatus = "Aus"
    
    function zisterne() {
        if(zisternenpumpe) zisternenstatus = "Ein";
        else zisternenstatus = "Aus";
    
        log(zisternenstatus);
    }
    
    on(idzisternenpumpe, function(dp) {
        zisternenpumpe = dp.state.val
        zisterne();
    });
    
    zisterne();
    


  • @fischi87
    Zeile 10:

        setState(idzisternenstatus, zisternenstatus, true);
    


  • @paul53 sagte in Script läuft einfach nicht!:

    @fischi87
    Zeile 10:

        setState(idzisternenstatus, zisternenstatus, true);
    

    ergänzen?



  • @fischi87 sagte:

    ergänzen?

    Ja.


Log in to reply
 

Suggested Topics

1.2k
Online

32.4k
Users

39.0k
Topics

528.1k
Posts