Tropfbewässerung: Sketche kombinieren

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Gnu_
Beiträge: 8
Registriert: 01.05.2020, 08:44
System: Alternative CCU (RaspberryMatic etc.)

Tropfbewässerung: Sketche kombinieren

Beitrag von Gnu_ » 01.05.2020, 09:47

Hallo liebe Community,

ich bin ganz neu im HM Universum und starte gerade mit einer Raspberry Matic CCU.

Als erstes Projekt möchte ich gerne eine Topfpflanze bewässern. Von der Hardwareseite hab ich alles da was ein kleiner Prototyp braucht:
5V Wasserpumpe, Arduino Pro Mini 3,3V, Funkmodul CC1101, Bodenfeuchtesensor, und einen DTH11 Temperatur/Luftfeuchte Sensor

Ich habe bereits Sketche wie den HB-UNI-SenAct-4-4 oder HB-UNI-Sen-CAP-MOIST ausprobiert und erfolgreich in Betrieb genommen.

Jetzt hier meine Frage, wie kann ich solche Sketche kombinieren? Ich möchte gerne ein Relay schalten (Motor) und gleichzeitig aber Sensorwerte auslesen (Die Temperatur/Feuchtigkeiten.

Gibt es dazu eine Anleitung? Bzw. Sketch den ich noch nicht gefunden habe? Ich habe noch nicht jede Codezeile verstanden. Wie müsste ich welche Stellen verändern?

Ich würde mich über Hilfestellung sehr freuen.

Fröhliches Basteln,
Gnu

harvey
Beiträge: 124
Registriert: 01.12.2013, 13:19
Danksagung erhalten: 3 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von harvey » 01.05.2020, 11:11

Hi,

schau mal bei MAjor Tom, der hat einen Schaltausgang und Sensoren kombiniert, allerdings nur als Schalter, der auf lokale Sensoren reagiert und entsprechendd schaltet.
Also die Sensoren und der tatsächkliche Schaltausgang werden an die CCU* gemeldet, allerdings ist der Schalter alleine durch die CCU* nicht schaltbar.
Der Sketch ist anpassbar, muss aber auch angepasst werden.

Technisch kann der Sensorteil durchaus auch eine Feuchtigkeitsstrecke messen, schau mal in den Sketch und den Schaltplan der Wetterstation.
Da findest Du einen Widerstand, der vom Sketch geschaltet einen Kondensator lädt und über die Entladung die Leitfähigkeit misst.
Davon kannst Du den Schaltausgang ableiten.
Ist aber etwas Arbeit, aber der CC-Teil (Addon zur Anzeige/Einstellung eines Homebrew-Sensors) ist scchon vorhanden.
Der Sketch und die Schaltung muss an die Wünsche, also Leitfähigkeitsmessung und Schaltausgang angepasst werden.

Viel Erfolg!
Harvey
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 50 Geräte

jp112sdl
Beiträge: 5050
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 180 Mal
Danksagung erhalten: 387 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von jp112sdl » 01.05.2020, 11:15

harvey hat geschrieben:
01.05.2020, 11:11
chau mal bei MAjor Tom, der hat einen Schaltausgang und Sensoren kombiniert,
Welches Projekt soll das sein? Ich find da nix mit Schaltausgang

VG,
Jérôme

harvey
Beiträge: 124
Registriert: 01.12.2013, 13:19
Danksagung erhalten: 3 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von harvey » 01.05.2020, 11:27

Hi,
schau mal da: https://github.com/TomMajor/SmartHome/t ... or-Heizung
so im Original ist es ein Lichtsensor mit Schaltausgang.

Für mich habe ich das mal modifiziert auf Temperatursensor mit Schaltausgang mit Schwellwerten, klappt.
Siehe: viewtopic.php?f=76&t=57291&p=569502#p569499

und schön mit ABSTAND Maidemo machen!
cu
Harvey
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 50 Geräte

jp112sdl
Beiträge: 5050
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 180 Mal
Danksagung erhalten: 387 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von jp112sdl » 01.05.2020, 11:53

harvey hat geschrieben:
01.05.2020, 11:27
schau mal da: https://github.com/TomMajor/SmartHome/t ... or-Heizung
Den Sketch hatte ich mir angeschaut, aber weder was von "Ausgang"noch "digitalWrite" gefunden :mrgreen:

VG,
Jérôme

harvey
Beiträge: 124
Registriert: 01.12.2013, 13:19
Danksagung erhalten: 3 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von harvey » 01.05.2020, 11:59

Hi,

z.B. in meinem Code (siehe download im verlinkten Thread) ab Zeile 540 :-)

Code: Alles auswählen

bool shouldSend(int32_t probe, uint8_t& state)
{
    static bool     lastState    = false;
    static uint16_t cycleCounter = 65635;    // nach Power-On sofort ein Telegramm senden
    bool            bRet         = false;

    int16_t        threshold_lower = this->device().getList0().threshold_lower();
    int16_t        threshold_upper = this->device().getList0().threshold_upper();
    uint8_t         measureFreq = this->device().getList0().measureFreq();
    bool            levelThreshold = this->device().getList0().levelThreshold(); // true: level (inside/outside), false: threshold (upper/lower)
    bool            invertRelay = this->device().getList0().invertRelay();       // true: relay on outside, below lower false: relay on inside, above upper
    
//    DPRINT(F("Threshold lower/upper: "));
//    DDEC(threshold_lower);
//    DPRINT(F("/"));
//    DDECLN(threshold_upper);
 
    if (!levelThreshold) {
        if ((!lastState) && (probe >= threshold_upper)) {       // (A) threshold, Überschreitung upper setzt Alarm
            lastState = true;
            state     = (invertRelay ? 0 : 1);   // relay inverted: off normal: on
            DPRINT(F("Alarm >= upper, Relay: "));
            DDECLN(state);
            cycleCounter = 0;
            bRet         = true;
        } else if ((lastState) && (probe < threshold_lower)) {  // (B) threshold, Unterschreitung lower loescht Alarm
            lastState = false;
            state     = (invertRelay ? 1 : 0);   // relay inverted: on normal: off
            DPRINT(F("Alarm < lower, Relay: "));
            DDECLN(state);
            cycleCounter = 0;
            bRet         = true;
        }
    } else {
...
und dann bei Zeile 591:

Code: Alles auswählen

void handleRelay(uint8_t state)
{
    uint8_t ledMode = this->device().getList0().ledMode();
//    DPRINT(F("Relay ledMode: "));
//    DDECLN(ledMode);
//    DPRINT(F("Relay state: "));
//    DDEC(state);
    if (state) {
       digitalWrite(ALARM_RELAY_PIN, HIGH);
       if (ledMode) {
          digitalWrite(ALARM_LED_PIN, HIGH);
       } else { 
          digitalWrite(ALARM_LED_PIN, LOW);
       }
    } else {
       digitalWrite(ALARM_RELAY_PIN, LOW);
       digitalWrite(ALARM_LED_PIN, LOW);
    }
}
Viel Freude!
cu
Harvey
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 50 Geräte

jp112sdl
Beiträge: 5050
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 180 Mal
Danksagung erhalten: 387 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von jp112sdl » 01.05.2020, 12:03

Ah, anderer Thread.
War alles etwas verwirrend

VG,
Jérôme

Gnu_
Beiträge: 8
Registriert: 01.05.2020, 08:44
System: Alternative CCU (RaspberryMatic etc.)

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von Gnu_ » 01.05.2020, 12:05

Hallo harvey,

vielen Dank schon mal dafür. Ich werde es heute/dieses Wochenende mal ausprobieren. :D

Fröhliches Basteln,
Gnu

TomMajor
Beiträge: 946
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 52 Mal
Danksagung erhalten: 160 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von TomMajor » 01.05.2020, 12:47

Wenn du die Logik, wann das Relais schalten soll, im Sketch erledigen kannst/willst könntest du die von harvey angesprochenen Bsp. leicht hernehmen und abändern.
In meinem HB-UNI-Sensor-Heizung ist ja die auszuführende Aktion "an die Zentrale senden", aber dort kannst du natürlich auch abhängig von den Sensorwerten ein Pin schalten usw.

Wenn du die Logik über die Zentrale machen willst und tatsächlich 2 homebrew Geräte vereinigen willst musst du dich mit xml, AddOn usw. beschäftigen, der Aufwand sich da einzuarbeiten ist deutlich größer.
Deshalb kommt dann oft der Ratschlag "Nimm 2 separate Geräte und packe sie nebeneinander" das spart Zeit und Nerven :wink:
Viele Grüße,
Tom

Gnu_
Beiträge: 8
Registriert: 01.05.2020, 08:44
System: Alternative CCU (RaspberryMatic etc.)

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von Gnu_ » 01.05.2020, 19:30

Hallo,

nur ein kleines Update. Ich konnte den Sketch von dir harvey schon gut für meine Zwecke umbauen. Ich werde die ganze Logik im Arduino machen und die CCU nur über Zustandsänderungen informieren. Ist für mich leichter denke ich.

Ich habe bereits einen DHT11 Sensor erfolgreich in Betrieb und bin grade noch beim Relay um den Motor ein/aus zuschalten.
Da ich ein 5V Relaymodul hernehme, scheitere ich grade an der 3.3V Level-Logik vom Arduino :( . Ich werde morgen mal ein Umbau auf 3,3V mit einem Potentiometer starten.

Danke nochmal.

Gnu

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“