Temperatur Bereich überwachen zu bestimmter Zeit ?

Begonnen von ChrisW, 23 Januar 2013, 14:43:23

Vorheriges Thema - Nächstes Thema

ChrisW

Hallo,
ich möchte gerne 2 Aqiarien überwachen. Am besten in 2 getrennten abfragen da unterschiedliche Temperaturen.
Geräte:
Temp_Aqua
Temp_Hannibal


Log bei beiden Gleich :
2013-01-23_14:30:50 Temp_Hannibal Temperatur: 22.5

Prüfungszeit 15 Uhr täglich. ( Da Temp. über nacht absinkt )

Temp_Aqua = unter 25c = Meldung : (Temp_Aqua zu kalt)
Temp_Aqua = über 28c = Meldung : (Temp_Aqua zu warm)

Temp_Hannibal = unter 23c = Meldung : (Temp_Hannibal zu kalt)
Temp_Hannibal = über 26c = Meldung : (Temp_Hannibal zu warm)

Gerätename udn Geräte Status mit @ und % kann ich auch selbst einbasteln es geht mir nur um das Grundgerüst.

Vielleicht kann mit ja jemand ein Code Schnipsel zur Verfügung stellen wo er ähnliches geprüft hat.
Danke

Raspberry PI3 mit allem möglichen.

Puschel74

Hallo,

das würde in etwa so aussehen:

define Ueberwach_1_Zeit at +*15:00:00 trigger Ueberwach_1

define Ueberwach_1 notify Ueberwach_1 {
  my $temp_aqua = (ReadingsVal("Temp_Aqua"),"Temperatur",20);
  my $temp_hannibal = (ReadingsVal("Temp_Hannibal"),"Temperatur",20);
  if (($temp_aqua < 25 ) || ($temp_hannibal < 25)) {
    Log (3,"Temperatur Aquarium ".$temp_aqua." und Hannibal ".$temp_hannibal." zu kalt");
  }
  if (($temp_aqua < 28 ) || ($temp_hannibal < 28)) {
    Log (3,"Temperatur Aquarium ".$temp_aqua." und Hannibal ".$temp_hannibal." zu warm");
  }
}


Wenn du beide getrennt melden willst brauchst du nur das || auflösen und beide Aquarien getrennt abfragen und auswerten.

Wie immer ungetestet und aus dem Kopf und geht sicher noch einfacher ;-)
Für Schreib- und/oder Klammerfehler kann ich nicht haftbar gemacht werden.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Und schon ein Fehler.

define Ueberwach_1_Zeit at +*15:00:00 trigger Ueberwach_1

muss natürlich

define Ueberwach_1_Zeit at *15:00:00 trigger Ueberwach_1

damit es täglich um 15 Uhr geprüft wird.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

ChrisW

hmmm bekomme ein Fehler
2013.01.23 20:31:00 3: Ueberwach_Aquarium return value: Not enough arguments for main::ReadingsVal at (eval 183) line 1, near ""Temp_Aqua")"
Not enough arguments for main::ReadingsVal at (eval 183) line 1, near ""Temp_Hannibal")"


Inhalt meines DEF:

Ueberwach_Aquarium {
my $Temp_Aqua = (ReadingsVal("Temp_Aqua"),"Temperatur",20);
  my $Temp_Hannibal = (ReadingsVal("Temp_Hannibal"),"Temperatur",20);
  if (($Temp_Aqua < 25 ) || ($Temp_Hannibal < 25)) {
    Log (3,"Temperatur Aquarium ".$Temp_Aqua." und Hannibal ".$Temp_Hannibal." zu kalt");
  }
  if (($Temp_Aqua < 28 ) || ($Temp_Hannibal < 28)) {
    Log (3,"Temperatur Aquarium ".$Temp_Aqua." und Hannibal ".$Temp_Hannibal." zu warm");
  }
}
Raspberry PI3 mit allem möglichen.

UliM

Zitat von: Chris schrieb am Mi, 23 Januar 2013 20:32
  my $Temp_Hannibal = (ReadingsVal("Temp_Hannibal"),"Temperatur",20);

Eine runde geschlossene Klammer kommt da zu früh, so wie's da steht hätte ReadingsVal nur einen Parameter:
 my $Temp_Hannibal = ReadingsVal("Temp_Hannibal","Temperatur",20);
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

ChrisW

Danka daran lag es. Nun gibt er mir aber aus:
2013.01.23 21:05:00 3: Temperatur Aquarium 20 und Hannibal 20 zu kalt
2013.01.23 21:05:00 3: Temperatur Aquarium 20 und Hannibal 20 zu warm

Wieso steht den im Code auch 20 drin ? Ist das nur ein Platzhalter ? Muss ich das mit dem Aktuellen Wert füllen lassen ?
Raspberry PI3 mit allem möglichen.

UliM

20 ist der default-Wert, der verwendet wird, wenn das device oder der reading-name nicht gefunden werden.
Vmtl heisst das reading nicht Temperatur, sondern temperature oder Temperature.
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

ChrisW

Hehe stimmt aber wo hatte ich dann das Log oben her KOMISCH
2013.01.23 21:41:00 3: Temperatur Aquarium 25.3 und Hannibal 23.8 zu kalt
2013.01.23 21:41:00 3: Temperatur Aquarium 25.3 und Hannibal 23.8 zu warm

Jetzt gehts. Okay das gefällt mir aber so noch nicht. Will ja die Geräte Einzeln bekommen.
Also Aquarium zu Warm
Aquarium zu kalt.

Und da stimmt noch was nicht:
2013.01.23 21:45:00 3: Temperatur Aquarium 25.3 und Hannibal 23.8 zu warm
Bei Code dürfte es nicht zu warm sein :D

Ueberwach_Aquarium {
my $Temp_Aqua = ReadingsVal("Temp_Aqua","temperature",20);
 my $Temp_Hannibal = ReadingsVal("Temp_Hannibal","temperature",20);
  if (($Temp_Aqua < 25 ) || ($Temp_Hannibal < 23)) {
    Log (3,"Temperatur Aquarium ".$Temp_Aqua." und Hannibal ".$Temp_Hannibal." zu kalt");
  }
  if (($Temp_Aqua < 28 ) || ($Temp_Hannibal < 26)) {
    Log (3,"Temperatur Aquarium ".$Temp_Aqua." und Hannibal ".$Temp_Hannibal." zu warm");
  }
}
Raspberry PI3 mit allem möglichen.

UliM

Vll ist's zu warm wenn die Temperatur GRÖSSER als die Schwellwerte ist. Mal Zeichen umdrehen?
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

ChrisW

oha Peinlich ;) Ja so kann es ja nicht funktionieren. Jetzt läufts :D
Ich baue gerade das ganze in Getrennte ausgaben um aber irgendwie klappt das nicht da alle 20 sind müsste ich 4 Meldungen bekommen .. bekomme aber nur 2 :(

Code:
Ueberwach_Aquarium {
my $Temp_Aqua = ReadingsVal("Temp_Aqua","temperature",20);
 my $Temp_Hannibal = ReadingsVal("Temp_Hannibal","temperature",20);
  if ($Temp_Aqua < 20 )  {
    Log (3,"Temperatur Aquarium ".$Temp_Aqua." zu kalt");
  }
    if ($Temp_Hannibal < 20 ) {
    Log (3,"Temperatur Hannibal ".$Temp_Hannibal." zu kalt");
  }
  if ($Temp_Aqua > 20 ) {
    Log (3,"Temperatur Aquarium ".$Temp_Aqua." zu warm");
  }
   if ($Temp_Hannibal > 20 )  {
    Log (3,"Temperatur Hannibal ".$Temp_Hannibal." zu warm");
  }
}


LOG:
2013.01.24 09:13:09 3: Temperatur Aquarium 24.5 zu warm
2013.01.24 09:13:09 3: Temperatur Hannibal 21.6 zu warm
Raspberry PI3 mit allem möglichen.

ChrisW

Denkfehler ;) Klar das nicht alle meldungen kommen HAHA :D Klappt wie es ausschaut.
Raspberry PI3 mit allem möglichen.

jhohn

so wie Du es jetzt definiert hast bekommst Du bei genau 20° keine Meldung.
FHEM auf Synology Diskstation DS413j (DSM4.3), HM LAN Adapter
Steuerung für Nachtspeicheröfen:
Ladung:   HM-WDS10-TH-O, HM-LC-Sw4-DR, Weather-Modul
Gebläse: HM-CC-TC, HM-LC-SW1-FM, HM-Sec-RHS
FHEM auf FritzBox 7390 für Telefon Funktionen

ChrisW

jo habs schon selbst gesehen. Funktioniert alles bestens ;) Danke für die Hilfe.

 Damit kann ich mir jetzt paar weitere dinge basteln ;=)
Raspberry PI3 mit allem möglichen.