Tropfbewässerung: Sketche kombinieren
Moderator: Co-Administratoren
Tropfbewässerung: Sketche kombinieren
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
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
Re: Tropfbewässerung: Sketche kombinieren
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
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
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: Tropfbewässerung: Sketche kombinieren
Welches Projekt soll das sein? Ich find da nix mit Schaltausgang
Re: Tropfbewässerung: Sketche kombinieren
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
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
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: Tropfbewässerung: Sketche kombinieren
Den Sketch hatte ich mir angeschaut, aber weder was von "Ausgang"noch "digitalWrite" gefundenharvey hat geschrieben: ↑01.05.2020, 11:27schau mal da: https://github.com/TomMajor/SmartHome/t ... or-Heizung
Re: Tropfbewässerung: Sketche kombinieren
Hi,
z.B. in meinem Code (siehe download im verlinkten Thread) ab Zeile 540
und dann bei Zeile 591:
Viel Freude!
cu
Harvey
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 {
...
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);
}
}
cu
Harvey
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 50 Geräte
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: Tropfbewässerung: Sketche kombinieren
Hallo harvey,
vielen Dank schon mal dafür. Ich werde es heute/dieses Wochenende mal ausprobieren.
Fröhliches Basteln,
Gnu
vielen Dank schon mal dafür. Ich werde es heute/dieses Wochenende mal ausprobieren.
Fröhliches Basteln,
Gnu
-
- Beiträge: 1793
- Registriert: 30.08.2017, 23:25
- Hat sich bedankt: 175 Mal
- Danksagung erhalten: 399 Mal
- Kontaktdaten:
Re: Tropfbewässerung: Sketche kombinieren
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
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
Viele Grüße,
Tom
Tom
Re: Tropfbewässerung: Sketche kombinieren
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
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