Servus,
gibt es Info, Planungen, Gerüche ob ein Gen2 "PLUS UNI" zu erwarten ist
Vielen Dank
Andy
Servus,
gibt es Info, Planungen, Gerüche ob ein Gen2 "PLUS UNI" zu erwarten ist
Vielen Dank
Andy
bei Y müsste evtl. an der Stelle "Weiche" ein zusätzlicher 4,7k Widerstand dran.
Ein kl. Kondesator zw. + und - hilft bei Y da auch öfters.
oh - ich hatte den 4,7k immer gleich am Addon gelegt - versuche ich.
Empfohlener Kondensator? und auch wieder an die "Weiche"?
Vielen Dank
Label => AddOn
Oben => Plus AddOn
Was hast du denn nu?
Ein Plus Addon - aber kein entsprechendes Tag vefügbar
https://smarthome-forum.eu/media/813-ar76…0-plus-1pm-png/
Kannst aber auch alle 5 an einen Klemmbock anschließen
Danke - Bild bekannt - ich war auf der Suche nach Erfahrungswerten und Ratschlägen von Usern, welche bereits dergl. augebaut haben.
Wäre es bitte möglich in die MQTT message die Sensor ID und den vergebenen Namen zu integrieren?
/status/temperature:100 => {"id": 100,"tC":7.0, "tF":44.6}
Das ist volantil und nicht wirklich aussagekräftig für die Nachbearbeitung...
(Oder falls jemand weiß wie das geht - bitte her damit!!)
Vielen Dank
Andy
Servus
bis dato habe ich 1wire nur zwei-adrig betrieben, mit dem Addon nur auf dreiadrig.
leider bekomme ich nur drei DS18b20 stabil zum laufen - jeder weitere hat impact auf Stabilität.
Welche Verkabelung wird empfohlen?
Bus? Stern? Y?
Welche Kabellängen sind erreichbar (Auf Dlingeldraht bzw Cat6)?
Lieben Dank für Erfahrungen
Andy
Eine Frage:
gehe ich recht in der Annahme, dass die drei VDD, Data, Gnd vom PulsAddOn intern parallel geschaltet sind?
Also nur "nette Schrauben zum Anschluss" aber keine weitere Funktion?
Vielen Dank
doch doch, die liegen alle auf einem Haufen - Verteilerkasten Fussbodenheizung...
Und ein ähnliches Setup kommt in den Heizungskeller...
Servus und vielen Dank
ich muss hier ca 30 TempSensoren abgreifen -> also echt 6 mal UNI ?
Auch wenn der hier nur für drei mal DS18B20 angegeben wird?
https://www.shelly.com/de/products/shop/shelly-uni-1
Kommt irgendwann ein UNI PLUS?
Gibt es eine Möglichkeit mehr als 5 von den DS18B20 zu betreiben?
So a la "auf eigenes Risiko"...?
doch, das ist einfacht:
function turnoff()
{
Shelly.call("switch.set",{ id: 0, on: false},function (result, code, msg, ud) {},null);
Timer.clear(mytimer);
}
mytimer = Timer.set(15*60*1000, true, function () {
turnoff();
});
Servus zusammen - ich seh vermutlich vor lauter Wald die Bäume nicht...
Shelly Plus2pm
Ziel
- start mit "ON after power on"
- warten für 10 minuten - abschalten (wenn an)
- fertig
und das alles unabhängig ob zwischenzeitlich der Status geändert wurde, und auch nicht den Timer neu starten, wenn power on gesetzt wird.
Wirklich nur nach reboot. (damit scheiden schedules leider aus)
Das riecht nach drei Zeilen und ich denk mir gerade einen Knoten.
Hat jemand einen Tipp bitte?
Vielen Dank
Lieber Devil,
erst mal vielen Dank für Deine Antwort.
Fühltest Du Dich "angeschrien", entschuldige, dies war nicht meine Absicht.
Gerne würde ich zur ursprünglichen Frage zurückkehren: Welche Fehler werden durch die Umstellung von 6 auf 12stellige ID behoben?
Nutzt du die Cloud?
klares NEIN
Servus,
Hier im Forum lese ich oft den Rat, die alten Shellies mit 6 stelliger ID auf 12 Stellen umzustellen.
Ich hab einen Satz dieser Teile im Einsatz, die laufen wie erwartet, und ich scheue den Aufwand der NEU-Konfiguration...
Was für Probleme beruhen (oder können eben beruhen) auf besagter 6 stelligen ID?
Oder "so lange keine Probleme besteht kein Grund zur Änderung..."
Vielen Dank
Servus Shellisten und Shelly-Süchtige
Bei mir geht der Shelly-Counter gerade durch die 20 und ich beginne Admin-Fragen rund um die Verwaltung zu stellen.
Ich suche nach einer Lösung für:
- zentrales Konfigurations Backup (automatisiert?), Versionierung, Rollout
- Push von Settings auf alle shellies (e.g. neuer SNTP server, neue SSID und PWD, etc)
- Push von Konfig eines Shellies auf einen neuen (weil der alte abgeraucht ist)
- Zentrale Anzeige von Firmwarestand und ob neue FW verfügbar
- script repo incl Versionierung der eingesetzten Scripte
- ...
Ich denke es wird klar, ich suche die Eierlegendewollmilchsau, die mir hilft, den Zoo zu bändigen.
Einzelne Tools bieten bereits lösungen für einzelnes (e.g. ShellyScan).
Hier im Forum lese ich von Usern die hunderte von Shellies am laufen haben - bitte wie macht Ihr das?
Erfahrungen? Ratschläge? Tipps?
Herzlichen Dank
hier mal mein aktueller Stand - ANFÄNGER level - freu mich über feedback, das geht sicher auch einfacher...
let state=0;
// 0 - starup, waiting for normal input
// 1 - light on - waiting for auto off
// 2 - flashing for auto off
// 3 - flashing for permanent on
// 4 - permanent on
let CONFIG = {
defaultTickerDelay : 0.500, // secs for checking state
defaultTimeout : 30, // seconds for auto off
defaultFlashCounter : 3, // how often to flash
defaultFlashTime : 4.500, // secs between flashes
defaultFlashOffTime : 0.500, // secs in off during flashing
defaultLongPressTime : 1.500, // secs to keep button pressed for permanent on
};
let tickerHandle = 0;
let buttonHandle = 0;
let btn_down_ts = 0; // time of last btn_down
let switch_on_ts = 0; // ts for last light on
let switchState = false;
let next_on_ts = 0;
let next_off_ts = 0;
let debug = false; // TRUE for print to console, false by default
function RelaySet(state)
{
Shelly.call("switch.set",{ id: 0, on: state},function (result, code, msg, ud) {},null);
switchState = state;
}
function Check(event){
let info = event.info;
if (debug) { print(JSON.stringify(info));}
if (info.component === "switch:0" && info.state !== undefined)
{
switchState = info.state;
}
if (info.component === "input:0")
{
if (info.event === "btn_down")
{
btn_down_ts = info.ts;
buttonHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,checkButton,info.ts + CONFIG.defaultTickerDelay);
if (debug) { print ("button down now: ", info.ts); }
}
else if (info.event === "btn_up")
{
Timer.clear(buttonHandle); // stop buttonChecker
let btn_down_duration = info.ts - btn_down_ts;
if (debug) { print ("button down duration ", btn_down_duration , " ( ", info.ts, " - ", btn_down_ts, " )");}
if (state === 0)
{ // turn light on and activate auto off
state = 1;
if (debug) { print ("State set to 1");}
RelaySet(true);
switch_on_ts = info.ts;
tickerHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,tick,info.ts +CONFIG.defaultTickerDelay );
}
else if (state === 1)
{ // light is normal on - normal off
state = 0;
if (debug) { print ("State set to 0"); }
RelaySet(false);
Timer.clear(tickerHandle); // stop ticker
}
else if (state === 2)
{ // was blinking - back to normal on
Timer.clear(tickerHandle); // stop ticker
state = 1;
if (debug) { print ("State set from 2 back to 1"); }
switch_on_ts = info.ts;
RelaySet(true);
tickerHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,tick,info.ts + CONFIG.defaultTickerDelay);
}
else if (state === 3)
{ // on the way to perm on - ignore
if (debug) { print ("late release 1"); }
}
else if (state === 4)
{ // was perm on - back to off
if (btn_down_duration > CONFIG.defaultLongPressTime)
{ // still during switching on - ignore
if (debug) { print ("late release 2"); }
} else {
Timer.clear(tickerHandle); // stop ticker
state = 0;
if (debug) { print ("State set from 4 back to 0"); }
RelaySet(false);
}
}
}
}
}
function checkButton (ts)
{
if (debug) { print("checkButton ", ts); }
let btn_down_duration = ts - btn_down_ts;
if (debug) { print ("Button down for ", btn_down_duration , " ( ", ts, " - ", btn_down_ts, " )"); }
if (btn_down_duration > CONFIG.defaultLongPressTime)
{
if (debug) { print ("Long press detected"); }
state = 3;
if (debug) { print ("State set to 3"); }
RelaySet(true);
next_off_ts = ts + CONFIG.defaultFlashOffTime;
tickerHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,tick,ts + CONFIG.defaultTickerDelay); // ticker will handle rest
} else
{
buttonHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,checkButton,ts + CONFIG.defaultTickerDelay); // restart timer on new ts
}
}
function tick(ts)
{
if (debug) { print("tick ", ts); }
tickerHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,tick,ts + CONFIG.defaultTickerDelay); // restart timer on new ts
let switch_on_duration = (ts - switch_on_ts);
if (state === 1 ) // waiting for timed off
{
if (debug) { print ("switch_on_duration ",switch_on_duration); }
if (switch_on_duration > CONFIG.defaultTimeout - CONFIG.defaultFlashCounter * (CONFIG.defaultFlashTime + CONFIG.defaultFlashOffTime) )
{
state=2; // start flashing
if (debug) { print ("State set to 2"); }
RelaySet(false);
next_on_ts = ts + CONFIG.defaultFlashOffTime;
}
} else if (state === 2) // blinking
{
if (switch_on_duration > CONFIG.defaultTimeout) // enough - off now
{
state=0;
if (debug) { print ("State set to 0"); }
RelaySet(false);
Timer.clear(tickerHandle);
} else if ((switchState === false) && (next_on_ts < ts))
{
RelaySet(true);
next_off_ts = ts + CONFIG.defaultFlashTime;
} else if (switchState === true && next_off_ts < ts)
{
RelaySet(false);
next_on_ts = ts + CONFIG.defaultFlashOffTime;
}
if (debug) { print ("next on ", next_on_ts, " next off ", next_off_ts); }
} else if (state === 3) // blinking for perm on
{
if (switchState === true && next_off_ts < ts)
{
RelaySet(false);
next_on_ts = ts + CONFIG.defaultFlashOffTime;
} else if ((switchState === false) && (next_on_ts < ts))
{
RelaySet(true);
state=4;
if (debug) { print ("State set to 4"); }
Timer.clear(tickerHandle); // ticker job done
}
}
}
Shelly.addEventHandler(Check);
Alles anzeigen
Hab mir ein Script zum Reboot vom Shelly gebaut, was nach 20sec Button down arbeitet.
Anfänger Scripting - bin für jedes Feedback offen, geht sicher einfacher...
Vielleicht hilfts noch wem...
let CONFIG = {
defaultTickerDelay : 0.500, // secs for checking state
defaultLongPressTime : 20.000 // secs before reboot
};
let debug = true; // TRUE for print to console, false by default
let btn_down_ts = 0;
let buttonHandle = 0;
function checkButton (ts)
{
if (debug) { print("checkButton ", ts); }
let btn_down_duration = ts - btn_down_ts;
if (debug) { print ("Button down for ", btn_down_duration , " ( ", ts, " - ", btn_down_ts, " )"); }
if (btn_down_duration > CONFIG.defaultLongPressTime)
{
if (debug) { print ("Long press detected - REBOOT"); }
Shelly.call("Shelly.Reboot", null, null);
} else
{
buttonHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,checkButton,ts + CONFIG.defaultTickerDelay); // restart timer on new ts
}
}
function Check(event){
let info = event.info;
if (debug) { print(JSON.stringify(info));}
if (info.component === "input:0")
{
if (info.event === "btn_up")
{
if (buttonHandle !== 0) {Timer.clear(buttonHandle);}
}
else if (info.event === "btn_down")
{
btn_down_ts = info.ts;
buttonHandle = Timer.set(CONFIG.defaultTickerDelay*1000,false,checkButton,info.ts + CONFIG.defaultTickerDelay);
if (debug) { print ("button down now: ", info.ts); }
}
}
}
Shelly.addEventHandler(Check);
Alles anzeigen
oh - sorry, das board hatte mir für Deinen Update leider kein email geschickt und ich habe erst jetzt nachgesehen.
Dein Script läuft und ist super easy im coding - danke dafür.
Mal sehen, ob ich die beiden verheiratet bekomme