NEWS
Script verbesserung
-
Hallo zusammen,
ich fange gerade mit Javascript an und hätte da mal was zum Drüberschauen.
Passt das so, oder wie kann man das Verbessern?
danke für Eure Tipps
/* Wenn der Automower seine Unterkunft (Station) verlassen hat, darf die Bewässerung nicht anspringen. Bei der Bewässerung ist ein Shelly1 zwischen Steuerung und Pumpe eingebaut. Via MQTT wird das Relais (GrundwasserPumpe) geschaltet. Version: 1.0 ist der Mäher zu hause, keine Bewässerung 1.1 Bewässerung wird mit den letzten 24h Niederschlag aus Wetterstation vernetzt */ const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; var iDniederschlag24, iDniederschlag24_ts; iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; iDniederschlag24_ts = getState('alias.0.Wetter.Doki.Niederschlag24h').ts; // triggert bei Mäher Aus- Einfahrt on({id: "alias.0.Rasenflaeche.Station", change: "any"}, function(dp) { iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; if(iDniederschlag24 == 0){ /* Niederschlag die letzten 24h */ if(getState(iDausloeser).val) { setState(iDpumpe, true); } else { setState(iDpumpe, false); } } else { setState(iDpumpe, false); } console.log('Niederschlag --- Mäher --->>> ' + iDniederschlag24 + ' mm/24h'); }); // triggert ber Niederschlag die letzten 24h on({id: "alias.0.Wetter.Doki.Niederschlag24h", change: "any"}, function(dp) { iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; console.log('Niederschlag --- 24h ---->>> ' + iDniederschlag24 + ' mm/24h'); if(iDniederschlag24==0) { setState(iDpumpe, true); console.log('Niederschlag ---> Pumpe an'); } else { setState(iDpumpe, false); console.log('Niederschlag ---> Pumpe aus'); } }); -
Hallo zusammen,
ich fange gerade mit Javascript an und hätte da mal was zum Drüberschauen.
Passt das so, oder wie kann man das Verbessern?
danke für Eure Tipps
/* Wenn der Automower seine Unterkunft (Station) verlassen hat, darf die Bewässerung nicht anspringen. Bei der Bewässerung ist ein Shelly1 zwischen Steuerung und Pumpe eingebaut. Via MQTT wird das Relais (GrundwasserPumpe) geschaltet. Version: 1.0 ist der Mäher zu hause, keine Bewässerung 1.1 Bewässerung wird mit den letzten 24h Niederschlag aus Wetterstation vernetzt */ const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; var iDniederschlag24, iDniederschlag24_ts; iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; iDniederschlag24_ts = getState('alias.0.Wetter.Doki.Niederschlag24h').ts; // triggert bei Mäher Aus- Einfahrt on({id: "alias.0.Rasenflaeche.Station", change: "any"}, function(dp) { iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; if(iDniederschlag24 == 0){ /* Niederschlag die letzten 24h */ if(getState(iDausloeser).val) { setState(iDpumpe, true); } else { setState(iDpumpe, false); } } else { setState(iDpumpe, false); } console.log('Niederschlag --- Mäher --->>> ' + iDniederschlag24 + ' mm/24h'); }); // triggert ber Niederschlag die letzten 24h on({id: "alias.0.Wetter.Doki.Niederschlag24h", change: "any"}, function(dp) { iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; console.log('Niederschlag --- 24h ---->>> ' + iDniederschlag24 + ' mm/24h'); if(iDniederschlag24==0) { setState(iDpumpe, true); console.log('Niederschlag ---> Pumpe an'); } else { setState(iDpumpe, false); console.log('Niederschlag ---> Pumpe aus'); } });@australien sagte in Script verbesserung:
iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val;
Finde solche Variablennamen immer schwierig. Ich würde davon ausgehen, dass in der Variablen eine ID steht (also ein String). Und nicht ein spezifischer Wert. Liest sich komisch.
Ansonsten könnte man das Script noch deutlich kürzen.
-
Hallo zusammen,
ich fange gerade mit Javascript an und hätte da mal was zum Drüberschauen.
Passt das so, oder wie kann man das Verbessern?
danke für Eure Tipps
/* Wenn der Automower seine Unterkunft (Station) verlassen hat, darf die Bewässerung nicht anspringen. Bei der Bewässerung ist ein Shelly1 zwischen Steuerung und Pumpe eingebaut. Via MQTT wird das Relais (GrundwasserPumpe) geschaltet. Version: 1.0 ist der Mäher zu hause, keine Bewässerung 1.1 Bewässerung wird mit den letzten 24h Niederschlag aus Wetterstation vernetzt */ const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; var iDniederschlag24, iDniederschlag24_ts; iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; iDniederschlag24_ts = getState('alias.0.Wetter.Doki.Niederschlag24h').ts; // triggert bei Mäher Aus- Einfahrt on({id: "alias.0.Rasenflaeche.Station", change: "any"}, function(dp) { iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; if(iDniederschlag24 == 0){ /* Niederschlag die letzten 24h */ if(getState(iDausloeser).val) { setState(iDpumpe, true); } else { setState(iDpumpe, false); } } else { setState(iDpumpe, false); } console.log('Niederschlag --- Mäher --->>> ' + iDniederschlag24 + ' mm/24h'); }); // triggert ber Niederschlag die letzten 24h on({id: "alias.0.Wetter.Doki.Niederschlag24h", change: "any"}, function(dp) { iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val; console.log('Niederschlag --- 24h ---->>> ' + iDniederschlag24 + ' mm/24h'); if(iDniederschlag24==0) { setState(iDpumpe, true); console.log('Niederschlag ---> Pumpe an'); } else { setState(iDpumpe, false); console.log('Niederschlag ---> Pumpe aus'); } });@australien sagte: wie kann man das Verbessern?
Ohne die Überschrift:
const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; const iDniederschlag24 = 'alias.0.Wetter.Doki.Niederschlag24h'; var niederschlag24 = getState(iDniederschlag24).val; // triggert bei Mäher Aus- Einfahrt on(iDausloeser, function(dp) { setState(iDpumpe, niederschlag24 == 0 && dp.state.val); log('Niederschlag --- Mäher --->>> ' + niederschlag24 + ' mm/24h'); }); // triggert ber Niederschlag die letzten 24h on(iDniederschlag24, function(dp) { niederschlag24 = dp.state.val; log('Niederschlag --- 24h ---->>> ' + niederschlag24 + ' mm/24h'); setState(iDpumpe, niederschlag24 == 0); log('Niederschlag ---> Pumpe ' + niederschlag24 ? 'aus' : 'an'); }); -
@australien sagte: wie kann man das Verbessern?
Ohne die Überschrift:
const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; const iDniederschlag24 = 'alias.0.Wetter.Doki.Niederschlag24h'; var niederschlag24 = getState(iDniederschlag24).val; // triggert bei Mäher Aus- Einfahrt on(iDausloeser, function(dp) { setState(iDpumpe, niederschlag24 == 0 && dp.state.val); log('Niederschlag --- Mäher --->>> ' + niederschlag24 + ' mm/24h'); }); // triggert ber Niederschlag die letzten 24h on(iDniederschlag24, function(dp) { niederschlag24 = dp.state.val; log('Niederschlag --- 24h ---->>> ' + niederschlag24 + ' mm/24h'); setState(iDpumpe, niederschlag24 == 0); log('Niederschlag ---> Pumpe ' + niederschlag24 ? 'aus' : 'an'); });@paul53 danke dafür!
da kann ich mir schon wieder was mitnehmen. -
@australien sagte in Script verbesserung:
iDniederschlag24 = getState('alias.0.Wetter.Doki.Niederschlag24h').val;
Finde solche Variablennamen immer schwierig. Ich würde davon ausgehen, dass in der Variablen eine ID steht (also ein String). Und nicht ein spezifischer Wert. Liest sich komisch.
Ansonsten könnte man das Script noch deutlich kürzen.
@haus-automatisierung stimmt, iD sollten Strings sein.
Wie gesagt, bin am Anfang. Habe selbst mit 1991 mit dem Programmieren (turbo Pascal und turbo C) aufgehört und will jetzt zu Hause wieder etwas machen. Der Kopf soll ja was zu tun haben ;) -
@paul53 danke dafür!
da kann ich mir schon wieder was mitnehmen.@australien sagte: wieder was mitnehmen.
Wenn der "Niederschlag24h" auf 0 gehen kann, während gemäht wird, dann besser so:
const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; const iDniederschlag24 = 'alias.0.Wetter.Doki.Niederschlag24h'; var niederschlag24 = getState(iDniederschlag24).val; var inStation = getState(iDausloeser).val; // triggert bei Mäher Aus- Einfahrt on(iDausloeser, function(dp) { inStation = dp.state.val; setState(iDpumpe, niederschlag24 == 0 && inStation); log('Niederschlag --- Mäher --->>> ' + niederschlag24 + ' mm/24h'); }); // triggert ber Niederschlag die letzten 24h on(iDniederschlag24, function(dp) { niederschlag24 = dp.state.val; log('Niederschlag --- 24h ---->>> ' + niederschlag24 + ' mm/24h'); setState(iDpumpe, niederschlag24 == 0 && inStation); log('Niederschlag ---> Pumpe ' + niederschlag24 ? 'aus' : 'an'); }); -
@australien sagte: wieder was mitnehmen.
Wenn der "Niederschlag24h" auf 0 gehen kann, während gemäht wird, dann besser so:
const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; const iDniederschlag24 = 'alias.0.Wetter.Doki.Niederschlag24h'; var niederschlag24 = getState(iDniederschlag24).val; var inStation = getState(iDausloeser).val; // triggert bei Mäher Aus- Einfahrt on(iDausloeser, function(dp) { inStation = dp.state.val; setState(iDpumpe, niederschlag24 == 0 && inStation); log('Niederschlag --- Mäher --->>> ' + niederschlag24 + ' mm/24h'); }); // triggert ber Niederschlag die letzten 24h on(iDniederschlag24, function(dp) { niederschlag24 = dp.state.val; log('Niederschlag --- 24h ---->>> ' + niederschlag24 + ' mm/24h'); setState(iDpumpe, niederschlag24 == 0 && inStation); log('Niederschlag ---> Pumpe ' + niederschlag24 ? 'aus' : 'an'); });@paul53 ja, kann er.
-
@paul53 ja, kann er.
@australien sagte: ja, kann er
Noch besser mit einer Funktion:
const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; const iDniederschlag24 = 'alias.0.Wetter.Doki.Niederschlag24h'; var niederschlag24 = getState(iDniederschlag24).val; var inStation = getState(iDausloeser).val; function grundwasser() { let pumpe = niederschlag24 == 0 && inStation; if(pumpe != getState(iDpumpe).val) { setState(iDpumpe, pumpe); log('Pumpe ' + (pumpe ? 'an' : 'aus')); } } grundwasser(); // Skriptstart // triggert bei Mäher Aus- Einfahrt on(iDausloeser, function(dp) { inStation = dp.state.val; log('Mäher ' + (inStation ? 'in Station' : 'mäht')); grundwasser(); }); // triggert ber Niederschlag die letzten 24h on(iDniederschlag24, function(dp) { niederschlag24 = dp.state.val; log('Niederschlag --- 24h ---->>> ' + niederschlag24 + ' mm/24h'); grundwasser(); }); -
@australien sagte: ja, kann er
Noch besser mit einer Funktion:
const iDausloeser = 'alias.0.Rasenflaeche.Station'; const iDpumpe = 'alias.0.Rasenflaeche.GrundwasserPumpe'; const iDniederschlag24 = 'alias.0.Wetter.Doki.Niederschlag24h'; var niederschlag24 = getState(iDniederschlag24).val; var inStation = getState(iDausloeser).val; function grundwasser() { let pumpe = niederschlag24 == 0 && inStation; if(pumpe != getState(iDpumpe).val) { setState(iDpumpe, pumpe); log('Pumpe ' + (pumpe ? 'an' : 'aus')); } } grundwasser(); // Skriptstart // triggert bei Mäher Aus- Einfahrt on(iDausloeser, function(dp) { inStation = dp.state.val; log('Mäher ' + (inStation ? 'in Station' : 'mäht')); grundwasser(); }); // triggert ber Niederschlag die letzten 24h on(iDniederschlag24, function(dp) { niederschlag24 = dp.state.val; log('Niederschlag --- 24h ---->>> ' + niederschlag24 + ' mm/24h'); grundwasser(); });@paul53 sehr übersichtlich nun! danke!
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login