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!
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden