SonOff Basic als eigenständige ReihenUmschaltung

  • Ich suchen nach einer Möglichkeit, mehrere 5l-Boiler mit je 2 kW über EINE 16A-Sicherung laufen zu lassen.


    Meine Idee wäre, mehrere SonOff-Basic so zu programmieren, dass sie ein eigenes WLAN aufbauen und sich der Reihe nach selbst ein- / durchschalten. Folgendes Vorgehen stelle ich mir vor:

    1. Ein SonOff-Basic ist der Master (und auch WLAN-Server) in einem geschlossenen, eigenen WLAN-Netz
    2. alle Anderen (bis zu 4 Geräte) sind als WLAN-Client eingebunden

    3. Alle Geräte starten in der Stellung "AUS"..

    3. Es darf immer nur EIN Boiler "AN" sein (sonst fliegt die 16A-Sicherung)

    4. Wenn ein Gerät länger als 30 sec (einstellbar) keinen Strom zieht (:= der Boiler hat keinen Wärmebedarf), dann schaltet sich der Kreis selbsttätig ab und meldet das zurück - quasi die Freigabe für den nächsten SonOff-Basic

    5. Die Weiterschaltung soll alle 5 min (einstellbar) - oder früher (siehe ziff.4.) erfolgen


    Leider habe ich wenig Erfahrung im programmieren - würde mich aber gerne einarbeiten!

    Wer kann mir Hilfestellung für diese Idee geben?


    mfG stepfl

  • So mit dem eigenständigen WLAN wird das wohl nix... Du kannst sie aber im "normalen" WLAN miteinander kommunizieren lassen.


    Ich gebe aber zu bedenken...

    1. Wie merken denn die Sonoffs das einer der Boiler wieder Strom braucht?

    2. Ein Sonoff Basic kann nur 10 Amper ab!

    3. Ein Basic kann auch keinen Strom messen.

  • Die Basic messen keinen Strom, damit geht das nicht. Es gibt Stecker z.B. Blitzwolf, die tun das. Als Wlan AP geht auch ein einfacher Repeater mit AP Funktion. Die gibt es auch als Stecker um die 10€ .
    Es wäre dann wohl denkbar bei bestimmter Last je den nächsten Stecker per HTML einzuschalten. Das geht dann auch ohne Server und würde so durchlaufen. Zur Sicherheit kann per HTML auch beim Einschalten das "Aus" an die anderen gesendet werden. Über Regeln unter Tasmota sollte das machbar sein. Kann man ja mal mit so drei Stück auf dem "Tisch" testen.
    Aber, normaler Weise gibt es Lastabwurfrelais in der Installationstechnik ohne WLAN usw.. Klingt alles irgendwie nach Tannenbaumlösung.

  • 3. Ein Basic kann auch keinen Strom messen.

    Wenn, dann geht das mit Sonoff POW, der hat eine Stromerfassung.


    Braucht aber einen Server (IOBRoker etc) der eine Auswertung fährt die alle Boiler nacheinander erst dann zuschaltet wenn alle POW ausgeschaltet sind.

    Logik:

    1. Wenn alle POW aus sind werden nacheinander die POW zugeschaltet.

    2. Sobald über einen POW Leistung gezogen wird (heizen) werden alle anderen ausgeschaltet oder bleiben aus.

    3. Wenn der der Leistung zieht wieder unter einen Grenzwert (aufgeheizt) fällt wird der POW ebenfalls ausgeschaltet.

    4. zurück zu Schritt 1.


    Um zu verhindern das dann der letzte nie dran käme weil die davor bei einer festgelegten Reihenfolge immer zuerst zugeschaltet würden. müsstest du eine rollierende Schleife in Deiner Auswertung vornehmen damit jeder der Boiler auch mal als erstes wieder zugeschaltet wird wenn all aus sind....


    Machbar, ja, aber mit ganz schön Aufwand.

    Tasmota 6.5.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

    2 Mal editiert, zuletzt von HoerMirAuf ()

  • Das geht auch ohne Server. Ein http request wenn die Leistung unter einen bestimmten Wert fällt. Habe das schon gemacht, ein Sonoff als Slave wenn ein anderer Ein/Aus schaltet. Nur eben es muss ein Schalter mit Leistungsmessung sein. Deshalb halte ich so einen Blitzwolf für gut. Es braucht nicht einmal einen Eingriff in die Installation, da es Stecker sind. Preislich nimmt sich das zu einen Sonoff POW auch nicht.
    Wenn man sowieso in die Installation eingreift, kann man gleich eine Relaisschaltung basteln ohne dieses WLAN Zeugs.


    BlitzWolf-BW-SHP2 schaltet 16A


    Alternativ wäre auch denkbar so einen 4CH zu nehmen und nur einen POW davor zum Messen.

  • Tja oder einen ganz anderen Ansatz. 4 DS18B20 und immer den Speicher mit einem 4CH zuschalten der am kältesten ist und die Leistung völlig ignorieren. Es gibt ja diese ESP8266 Module mit usb Stromversorgung für
    rund 3€ die laufen auch mit Tasmota. Aber das ist auch wieder mit basteln verbunden. Das lässt sich für die 3€ plus je 1€ für die Fühler auch mal preiswert auf dem Tisch testen.

  • WOW - vielen Dank für die Beiträge...


    ich bin das WE leider unterwegs - kann mir also eure Gedanken erst nächste Woche näher ansehen.


    NUR - ich brauch eine Lösung mit CE - ist für einen Mieter
    und: Lastabwurfrelais geht nicht, da die drei Boiler räumlich und installationstechnisch getrennt (aber in WLAN-Reichweite) stehen.


    Ich wünsche euch ein schönes Wochenende - und melde mich wieder!

  • Das geht auch ohne Server. Ein http request wenn die Leistung unter einen bestimmten Wert fällt. Habe das schon gemacht, ein Sonoff als Slave wenn ein anderer Ein/Aus schaltet. Nur eben es muss ein Schalter mit Leistungsmessung sein. Deshalb halte ich so einen Blitzwolf für gut. Es braucht nicht einmal einen Eingriff in die Installation, da es Stecker sind. Preislich nimmt sich das zu einen Sonoff POW auch nicht.
    Wenn man sowieso in die Installation eingreift, kann man gleich eine Relaisschaltung basteln ohne dieses WLAN Zeugs.

    Und die Logik? Da bin ich mal gespannt wie du das im Sonoff realisieren willst.

    Tasmota 6.5.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

  • Das ausschalten aller andern wenn einer an ist ist da kein Problem.


    Aber das rollieren damit jeder mal zuerst einschaltet und damit die Gelegenheit zum heizen bekommt?
    Ne zählung der Ausschaltungen?

    Aber wenn einer mal was nicht mitbekommt, funzt das alles nicht mehr ....

    Tasmota 6.5.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

  • Wenn ich drüber nachdenke gäbe es vielleicht doch einen Weg ohne Server (Denkfehler nicht ausgeschlossen):


    Sonoff POW1:

    Zuerst eine Rule die die Rule wenn der Stromfluss unter eine Schwelle sinkt aktiviert und solange sie höher ist deaktiviert

    Ist der Boiler aufgeheizt wird Rule 2 aktiv, schaltet den POW1 selbst aus, wartet 10 Minuten und schalten den POW2 mit Websend ein und gleichzeitig zur Sicherheit alle anderen POW aus.


    Code
    1. rule1 on Energy#Power<WERTLOW do rule2 1 endon on Energy#Power>WERTHIGH do rule2 0 endon
    Code
    1. rule2 on Energy#Power<WERT do backlog Power1 0; ruletimer1 600 endon on rules#timer=1 do backlog websend [<IP2>,<user>:<password>] POWER1 1; websend [<IP3>,<user>:<password>] POWER1 0 endon; websend [<IP4>,<user>:<password>] POWER1 0; websend [<IP3>,<user>:<password>] POWER1 0; websend [<IP5>,<user>:<password>] POWER1 0 endon


    Dieselbe Rule kommt jetzt der Reihe nach in jeden POW nur das der immer den nächsten einschaltet, damit ist gewährleistet das jeder auch zum heizen kommt.


    Also:

    POW1 -> POW2, ein; POW3 aus; POW4 aus; POW5 aus

    POW2 -> POW3, ein; POW4 aus; POW5 aus; POW1 aus

    POW3 -> POW4, ein; POW5 aus; POW1 aus; POW2 aus

    usw.


    Als Redundanz (hängt jetzt ein wenig von der Dauer ab die so ein Boiler braucht um aufzuheizen)


    Wenn der POW sich selbst ausschaltet bzw. ausgeschaltet wird, wird ein weitere Ruletimer gestartet. im Beispiel 1 Stunde.

    Immer wenn der POW einen Ausschaltbefehl von einem der anderen POW bekommt, wird der Timer zurückgesetzt und beginnt von vorne.

    Bekommt er länger als 1 Stunde keinen Auschaltbefehl, von einem der andern (WLAN Verlust, defekt, etc) schaltet er nicht den 2. sondern den 3. POW ein und das Spiel geht weiter. Passiert das beim POW3 schaltet der eben nicht POW4 usw. Sich selbst darf nicht schalten weil er ja wegen der Heizperiode eh schon am längsten keinen AUS Befehl mehr bekommen hat und den nächsten auch nicht weil dieser ja die Kette unterbrochen haben könnte.


    Mag sein das dann einer mal ne Zeit nicht heizt aber kommt dann irgendwann wieder in den Ablauf.

    Code
    1. rule3 on power#state=0 do ruletimer2 3600 endon on rules#timer=2 do websend do backlog websend [<IP3>,<user>:<password>] POWER1 1; websend [<IP4>,<user>:<password>] POWER1 0 endon; websend [<IP5>,<user>:<password>] POWER1 0; websend [<IP5>,<user>:<password>] POWER1 0; websend [<IP2>,<user>:<password>] POWER1 0 endon


    Elegant ist das aber nicht wirklich und kann auch sein das ich da jetzt nen riesen Denkfehler hab. ^^

    Tasmota 6.5.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

  • HoerMirauf: DANKE - so in etwa hatte ich mir vorgestellt. Quasi als "Wolke" von Geräten im selben IP-Bereich, die sich in einer Art Ringelpietz gegenseitig abfragen und schalten.


    In der Anfangsversion möchte ich die einfachste Version ohne zusätzliche Absicherung der Funktionsweise versuchen.

    Nur für den Startprozess bräuchte es noch einen Lösungsansatz (WER fängt an) - sonst bleiben alle im Warten hängen.


    leider kenne ich mich mit dieser Form der Programmierung (Rules) überhaupt nicht aus...
    Den Link von "supermicha" werde ich jetzt erst einmal durchlesen - mal sehen, ob ichs verstehe.

    Wenn es mit Python programmierbar wäre, würde ich mich etwas vertrauter fühlen :-). Geht so etwas in den SonOff?


    Gut - falls das zu schwierig oder Fehleranfällig ist, würde ich alternativ das Ganze mit einem Rasp als Master realisieren.
    Das traue ich mich eher zu ....


    Ich fand halt die Idee interessant, dass man per WLAN eine Gruppe Schalter so gestalten könnte, dass sie ihre Schaltreihenfolge ( ohne weitere/zusätzliche Serverintelligenz) organisieren.

    Erst mal ganz vielen lieben Dank!

  • Wenn es mit Python programmierbar wäre, würde ich mich etwas vertrauter fühlen :-). Geht so etwas in den SonOff?

    Neeee ^^ leider nicht.


    Rules werden in der Konsole eingegeben. Im Prinzip 1:1 wie ich geschrieben hab nur eben mit deinen IP's etc.

    Und dann die Rule aktivieren rule1 1



    die sich in einer Art Ringelpietz gegenseitig abfragen und schalten.

    Abgefragt wird da aber nix. Und genau das ist der Knackpunkt bei Serverlosen Lösungen. Keiner kennt den genauen Zustand des anderen.

    Es wird lediglich gegeneinander verriegelt. Wenn einer an geht, gehen alle anderen aus falls an.

    Tasmota 6.5.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

    Einmal editiert, zuletzt von HoerMirAuf ()

  • ... noch eine Frage:

    kann ich mit einer Rule auch etwas bei einem/mehreren/allen anderen Gerät(en) abfragen?


    also z.B.: FRAGE: "melde mir deinen Status"
    die Idee ist, ob ich damit eine Art Anfrage des Ringstatus starten könnte :


    Beispiel: 4 SonOff (A)...(D)
    (A): ist AUS - will AN-Schalten - z.B. wg. Timer, - startet die Abfrage des Ringstatus bei "Nachfolger"(B)- z.B. weil ein Timer abgelaufen ist und wartet anschließend auf eine Meldung von "Vorgänger" (D)....


    (A) => (B): mein Ringstatus = AUS ( + Restart des Timers von (A))

    (B: ist AN): Meldung an (C) : mein RINGSTATUS := AN (+ Restart des Timers von (B))

    => (C: Status egal da (B)=AN): Meldung an (D) ... : mein Ringstatus = AN ( + Restart des Timers von (C))

    (D: Status egal, da Meldung(C):AN ) => (A): Ringstatus = AN (+ Restart des Timers von (D))

    => (A) bleibt AUS


    Wenn die Meldung "Ringstatus= "AUS" wäre,

    könnte (A) nun ggf einschalten => neue Meldung an (B) Ringstatus = AN ........ usw. oder auf den Ablauf des Timers warten...

    Wenn die Meldung "AN" kommt - oder keine Meldung(:=Störung) :=> (A) muß aus bleiben...

  • ... noch eine Frage:

    kann ich mit einer Rule auch etwas bei einem/mehreren/allen anderen Gerät(en) abfragen?


    also z.B.: FRAGE: "melde mir deinen Status"
    die Idee ist, ob ich damit eine Art Anfrage des Ringstatus starten könnte :

    Nein. Nicht direkt.


    Ich könnte zwar an jedem Gerät ein vitruelles Relais einstellen, das dann mit einem Websend schalten und dann mit einer Rule beim toggeln den virteullen relais eine Websend zurück geben mit dem ich ein virtuelles Relais am sender schalte und anhand des Schaltzustandes des virtuellen Relais am Sender den Schaltzustand vom Empfänger gespiegelt bekomme ... (was anderes fällt mir da jetzt nicht ein) aber das würde ja schon für 2 Geräte 2 virtuelle Relais zusätztlich bedeuten. Ganz zu schweigen von ner Auswertung. Du siehst da kriegste nen Knoten im Hirn.


    Für sowas ist der Websend einfach nicht gedacht und ausgelegt.


    kann man während dieses Ablaufs (sofern so etwas überhaupt geht) per PC auf den Sonoffs ansehen, wie der jeweilige Status ist?

    Nein. Weil der Websend ja nur an die EMpfänger IP geht.... und kein Broadcast ins Netzwerk ist.


    Und jetzt kommt wieder meine Aussage vom Post #5:

    Braucht aber einen Server

    Alles das mit Status etc. geht wenn du einen zentralen MQTT Server hast. Aktuelle Status, eine Logik die sauber verknüfen kannst etc.

    Tasmota 6.5.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

  • kann man während dieses Ablaufs (sofern so etwas überhaupt geht) per PC auf den Sonoffs ansehen, wie der jeweilige Status ist?

    Halt doch ... über die Weboberfläche des jeweilgen Gerätes geht das natürlich.

    Tasmota 6.5.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini

  • HoerMirAuf - super - vielen Dank!


    Ich sehe schon, DAS muß ich mir erst einmal näher ansehen, um deine Ausführungen wirklich verstehen zu können :-)

    Auf die Idee mit Python bin ich nur gekommen, weil ich beim Stöbern im Web über "Getting started with MicroPython on the ESP8266" hier gestolpert bin....

    und auch "Getting MicroPython on a SonOff Smart Switch" hier - ob das funktioniert - und wie bekomme ich dann meine Wunschfunktionalität dort rein... ?!?

    DAS scheint jetzt aber erst mal eine andere Baustelle zu sein ...


    Ich melde mich wieder... sänks!

    Einmal editiert, zuletzt von stepfl () aus folgendem Grund: habe erst noch den richtigen Link gesucht

  • HoerMirauf: zu deinen Beispiel-rules habe ich folgende VerständnisFragen:


    Code
    1. rule2 on Energy#Power<WERT do backlog Power1 0; ruletimer1 600 endon on rules#timer=1 do backlog websend [<IP2>,<user>:<password>] POWER1 1; websend [<IP3>,<user>:<password>] POWER1 0 ENDON; websend [<IP4>,<user>:<password>] POWER1 0; websend [<IP3>,<user>:<password>] POWER1 0; websend [<IP5>,<user>:<password>] POWER1 0 endof



    1) warum steht nach dem ersten "websend [IP3....]...." ein endon? Ist das Absicht oder ein Kopierfehler?

    2) warum kommt "websend [IP3....] " zweimal vor? Kopierfehler?

    3) könnte ich auch erst alle Anderen IPx ausschalten und am Schluß das nächste Relais EIN-schalten? (Lastbegrenzung!)


    4) könnte ich auch per "websend" beim Empfänger ein "ruletimer2 5" senden/einstellen ... oder "mem1 10" ?

    oder....

    5) funktioniert bei "websend" auch "backlog" - sprich könnte ich so zu IPx mehrere Kommandos als Paket senden?



    ... und in rule3 verstehe ich in der Sequenz "on rules#timer=2 do websend do backlog websend ...." nicht.


    Bitte nicht falsch verstehen - ich möchte deine rules für mich nachvollziehen/ verstehen können
    und für mich überlegen, wie ich das Ganze aufbauen könnte ... DANN werde ich hier sicherlich wieder fragen ;-)