INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Standheizung mit SMS steuern
04.08.2015, 10:24
Beitrag #1
Standheizung mit SMS steuern
Möchte gerne meine Standheizung mit einem Arduino und ein GSM/GPRS Shield bedienen.

Habe leider noch keine Lösung gefunden wie ich einen Timer mache ohne Delay.
Hatte es mal über die Funktion Blinken ohne Delay versucht. Habe aber dabei 2 Probleme. Er fängt bei 48 Tage wieder von vorne an zu zählen. Wenn ich sie dann kurz vorher einschalte läuft sie 48 Tage durch. Habe den Code mit einem Schalter und einer LED probiert hat Funktioniert, nur im Programmcode für die Webasto Heizung ging es dann nicht mehr.
2 Möglichkeit ich nehme eine Real Time Clock und lese mir die Minuten aus.
Mein Problem ist wenn ich zb. bei 17:50 bin und rechne 20 min drauf bin ich bei 18:10 Arduino bei 17:70 oder kann er mit Minuten rechnen.

Habe alles soweit Programmiert:
1. Kann meine Heizung einschalten mit einer SMS auch über die Webasto app.
Bekomme auch eine Bestätigungs-SMS wenn sie an ist.
2. Kann meine Heizung ausschalten mit einer SMS auch über die Webasto app.
Bekomme auch eine Bestätigungs-SMS wenn sie aus ist.
3. Beim einschalten wird auch die Batteriespannung überprüft.
4. Standheizung wird Ausgeschaltet wenn die Batterie unter z.B. 12V fällt
5. Bekomme eine SMS wenn die Batterie unter 12v fällt. auch wenn die
Heizung nicht an ist.
6. Habe 3 Handynummern einprogrammiert, nur die können die Standheizung
einschalten.
7. Kann die Ladespannung abfragen, bekomme aber nur eine Meldung ( Batterie
voll; Batterie schwach; Batterie leer)
8. Kann auch die Standheizung auf nur Lüften stellen. Ein und Ausschalten mit
Bestätigungs-SMS.

Was noch nicht geht ist.

1. Wenn die Standheizung an ist das sie nach 20 min aus geht.
2. Wenn die Lüftung an ist das sie nach 20 min aus geht.



Gruß Marco
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.08.2015, 12:22
Beitrag #2
RE: Standheizung mit SMS steuern
Die Zeit von 20 Min. kannst du mit einem Zähler machen, der in der Loop x mal durchläuft und ein kurzes delay hat.

Oder mit einer RTC, du must da nur entsprechend rechnen. Es gibt da genügend Beispiele (habe leider keins parat) im Forum. Da es mit Schaltuhren genauso funktioniert, weiß ich das es geht.

"Google: arduino rtc zeitschaltuhr" werden einige Beispiel genannt.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.08.2015, 11:09
Beitrag #3
RE: Standheizung mit SMS steuern
(04.08.2015 10:24)Mreichart schrieb:  1. Wenn die Standheizung an ist das sie nach 20 min aus geht.
Das macht man in etwa so:
Code:
void loop() {

  static unsigned long dannWannHeizungAngeschaltetWurde = 0;
  static boolean heizungIstAn = false;  

  unsigned long jetzt = millis();

  [...]
  if(...) {                       // Bedingung, die die Heizung einschaltet
     standheizung_an();  // oder wie auch immer
     heizungIstAn = true;
     dannWannHeizungAngeschaltetWurde = jetzt;
  }
  
  if(heizungIstAn && jetzt - dannWannHeizungAngeschaltetWurde >= 60L * 20L * 1000L) {
    standheizung_aus();
    heizungIstAn = false;
  }
}
Der Vergleich der Zeit muss unbedingt in dieser Form gemacht werden:
Code:
jetzt - alteZeit <Vergleichsoperator> <Zeitdifferenz>
Also so wie oben im Coding und NICHT etwa sowas wie hier:
Code:
// SCHLECHTE IDEE
jetzt >= dannWannHeizungAngeschaltetWurde + 60L * 20L * 1000L
Es ist auch eine ganz schlechte Idee, zuerst die Ablaufzeit zu berechnen und dann dagegen zu vergleichen:
Code:
// SCHLECHTE IDEE
unsigned long ablaufZeit = dannWannHeizungAngeschaltetWurde + 60L * 20L * 1000L ;
if(jetzt >= ablaufZeit) ...
Rein mathematisch ist das zwar dasselbe, aber nur die richtige Version funktioniert auch bei Überläufen richtig.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.08.2015, 10:17 (Dieser Beitrag wurde zuletzt bearbeitet: 06.08.2015 11:03 von Mreichart.)
Beitrag #4
RE: Standheizung mit SMS steuern
Hallo
Danke für die schnelle Antwort.
Habe den Code so geschrieben
int Relaise1 = 12; // the number of the LED pin
int buttonPin = 10; // the number of the pushbutton pin
int buttonState = 0; // Variables will change :

void setup()
{
pinMode(Relaise1, OUTPUT);
}
void loop()
{
static unsigned long dannWannHeizungAngeschaltetWurde = 0;
static boolean heizungIstAn = false;
unsigned long jetzt = millis();

buttonState = digitalRead(buttonPin);

if(heizungIstAn && jetzt - dannWannHeizungAngeschaltetWurde >= 60L * 1L * 1000L)
{
digitalWrite(Relaise1,LOW);
heizungIstAn = false;
}
if ((buttonState == HIGH) && (heizungIstAn = true))
{
digitalWrite(Relaise1, HIGH);
heizungIstAn = true;

dannWannHeizungAngeschaltetWurde = jetzt;
}

}
Wenn meine Berechnung richtig ist soll sie nach 60sec ausgehen.
Aber er schaltet wie er will ca. 25-30 sec manchmal auch nur 7sec.

Gruß Marco

Hallo
Habe mal mit einer RTC Uhr gespielt
#include <Wire.h>
#include "RTClib.h"
int Relaise1 = 12; // the number of the LED pin
int buttonPin = 10; // the number of the pushbutton pin
int buttonState = 0; // Variables will change :
int Heizungaus = 0;
DateTime future = 0;
DateTime neu = 0 ;
RTC_DS1307 RTC;
void setup () {
pinMode(Relaise1, OUTPUT);

Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));

}
}
void loop () {
// Uhrzeit auslesen und in "now" speichern:
DateTime now = RTC.now();
// Datum und Uhrzeit auf dem serial monitor ausgeben:
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();


buttonState = digitalRead(buttonPin);
if ((buttonState == HIGH) && (Heizungaus == 0))
{
digitalWrite(Relaise1, HIGH);
DateTime future (now.unixtime() + 0.3333 * 3600L);
Heizungaus = 1;
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.println(future.minute(), DEC);
}


Serial.println(Heizungaus);
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.println(future.minute(), DEC);

if (now.unixtime() >= future.unixtime() && (Heizungaus == 1))
{
digitalWrite(Relaise1, LOW);
Heizungaus = 0;
}
}
Das Problem dass ich habe ist:
Die Uhrzeit kann ich auslesen die stimmt. 14:50
Wenn ich DateTime future in der if Schleife setzte 15:10 ca. 20 min mehr, die Zeit wird mir auch angezeigt. Gehe ich aber aus der Schleife habe ich eine andere Uhrzeit 6:28
Dadurch kann ich nicht überprüfen ob meine Abschaltung funktioniert.
Gruß Marco
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.08.2015, 11:04
Beitrag #5
RE: Standheizung mit SMS steuern
Hi,
ich verstehe nicht, warum sie überhaupt angeht. In der Bedingung zum Einschalten hast Du "heizungIstAn == true" stehen. D.h. er schaltet sie eigentlich nur an, wenn sie schon an ist (???).
Außerdem: Hat der Button einen Pulldown-Widerstand?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.08.2015, 11:58 (Dieser Beitrag wurde zuletzt bearbeitet: 06.08.2015 12:14 von Mreichart.)
Beitrag #6
RE: Standheizung mit SMS steuern
Hallo
Habe ein 10k auf GND und 5v über den Schalter
Wenn ich den Code ändere
int Relaise1 = 12; // the number of the LED pin
int buttonPin = 10; // the number of the pushbutton pin
int buttonState = 0; // Variables will change :
int heizung = 0;
void setup() {
pinMode(Relaise1, OUTPUT);
}
void loop()
{
static unsigned long dannWannHeizungAngeschaltetWurde = 0;
static boolean heizungIstAn = false;
unsigned long jetzt = millis();
buttonState = digitalRead(buttonPin);
//if(heizung = 1 && jetzt - dannWannHeizungAngeschaltetWurde >= 60L * 1L * 1000L)
// {
// digitalWrite(Relaise1,LOW);
// heizung = 0;
// }
//
if ((buttonState == HIGH) && (heizung == 0))
{
digitalWrite(Relaise1, HIGH);
heizung = 1;
dannWannHeizungAngeschaltetWurde = jetzt;
}
}

wird sie Ausgeschalten nach 20-30sec
Habe schon mit einem UNO und MEGA probiert, beides das gleiche.

Habe das Problem gefunden.
Das USB Kabel oder mein Laptop hat ein Problem.
Beim Mega hat die LED beim USB-Port (AREF) kurz geflackert. Dadurch ist die LED ausgegangen.
Habe das Board mit einer externen Batterie versorgt, dann ging es.
Warum es mit dem True oder False nicht gegangen ist keine Ahnung, werde es morgen nochmal probieren.
Danke nochmal für die Hilfe.
Gruß Marco
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Servo über Temperatur steuern querkopf71 3 73 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Arduino Steuern über eigne Homepage b3ta 8 404 16.08.2016 11:07
Letzter Beitrag: Pit
  PWM-Lüfter mit Adafruit Motor-Shield steuern? phischmi 9 465 22.07.2016 18:06
Letzter Beitrag: phischmi
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 758 16.07.2016 11:43
Letzter Beitrag: Binatone
  DC Motor in beide Richtungen steuern WIMunios 5 648 24.03.2016 12:04
Letzter Beitrag: Bitklopfer
  Mit RFID Sensor NFC Tags steuern WIMunios 14 926 15.03.2016 12:07
Letzter Beitrag: WIMunios
  WS2812 Helligkeit einzelner LEDs steuern mavericklp 3 661 11.03.2016 09:32
Letzter Beitrag: torsten_156
Bug Mit zwei Ultraschallsensoren die Drehbewegung eines Servos steuern Poet 5 563 21.02.2016 18:37
Letzter Beitrag: Carlo
  Über Pin43 den Pin42 steuern, ist das so richtig? arduinofan 5 491 01.02.2016 21:01
Letzter Beitrag: ardu_arne
Question Arduino mit Java ( Eclipse ) steuern SirKomex 0 522 28.01.2016 08:48
Letzter Beitrag: SirKomex

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste