Hallo und guten Abend
ich habe hier im Forum für mein Vorhaben schon sehr viel gefunden, doch jetzt komme ich einfach nicht weiter.Ich würde mich freuen, wenn mir jemand helfen könnte
ich habe eine Kamera an einer FBDECT Steckdose, diese zeigt je nach Tag oder Nacht (infarot) unterschiedliche Wattzahlen an ca 3Watt normal, ca 7 Watt mit Infarot,
im Modul Readingsgroup "erscheinen" diese Daten schön regelmäßig :)
Mein Ziel ist es, eine weitere Kamera an einer IT Steckdose auszuschalten, so bald die FBSteckdose einen Stromverbrauch von mehr als 7 Watt anzeigt, da die andere Kamera nicht im Infarotbetrieb "laufen" soll
mit meinem notify erreiche ich jedoch keine Schaltung
userReadings FBDECT_17:power IF { ReadingsVal("FBDECT_17","power",0) 7) (set intertek1 aus)
das ist mein jetztiges notify (aus DEF)
Was mache ich falsch?
in der LOG erscheint nichts
im Eventmonitor - jedes mal das reading mit entsprechendem Wert
kann mir bitte jemand einen Hinweis geben?
Danke im voraus
Grüsse
Hallo,
ZitatWas mache ich falsch?
Zitatdas ist mein jetztiges notify (aus DEF)
Äh du hast ein userReading gepostet aber kein notify :o
Grüße
nicht ganz richtig Puschel - was er gepostet hat ist der Inhalt des DEF feldes eines notifys mit einer IF - Perl mischung...
versuche mal
FBDECT_17:power IF ([FBDECT_17:power:d] > 7) (set intertek1 aus)
in das DEF feld zu schreiben...
aus ist auf off gemappt?
Hallo,
das
userReadings FBDECT_17:power IF { ReadingsVal("FBDECT_17","power",0) 7) (set intertek1 aus)
ist kein notify - behaupte ich mal.
userReadings wäre lt. commandref das regexp.
Das sollte ja nicht so ganz klappen - wie die Frage ja zeigt.
Zitatmit meinem notify erreiche ich jedoch keine Schaltung
Nun ja.
Ich animiere auch gern mal zum selbst-nach-denken ;)
Grüße
Edith:
ZitatInhalt des DEF feldes eines notifys mit einer IF
Es könnte auch das DEF eines at sein ;)
ein user reading ist übrigens eigentlich nicht die richtige stelle das umzusetzen.
um abhängig von einer binären größe zu schalten ist watchdog das richtige bei einer analogen größe THRESHOLD.
oder wenn man es com hand machen möchte notify. dann muss man sich aber selber um das vermeiden von mehrfach schalten und die hysterese und noch einiges andere kümmern.
gruss
andre
Naja - das kommt ja darauf an wie oft die Bedingung zutrifft... Ich habe etwas ähnliches hier im Einsatz, ich würde zwar gerne einen Watchdog hinzunehmen - da es bei mir dann doch etwas komplizierter ist weiß ich nicht wie ich den da noch reinschachteln soll...
mpl_Herd_p IF (([mpl_Herd_p] > 2.0 ) and ([mpl_Herd_p] < 25.0 )) (set mpl_Herd_s off)
ist bei mir jedenfalls die ausschaltbedingung.
geschaltet wird bei mir nur wenn der Verbraucher unter 25 Watt sinkt, problem ist das der Backofen das auch schonmal macht wenn die Temperatur im inneren erreicht ist und die Heizspindel sich "kurzzeitig" abschaltet.
@Tagedieb - falls es wie oben geschrieben nicht funktioniert setz bitte 7 mal auf 7.0
@Andre: Eigentlich hab ich grad was anderes auszuprobieren... Ich mach mich mal an die Arbeit.
warum hängt das davon ab wie oft die bedingung zutrifft?
für deine fall ist eine kombination aus THRESHOLD und watchdog richtig. zuerst THRESHOLD und den analogen verbrauch in ein digitales über oder unter dem schwellwert zu verwandeln und dann ein watchdog der schaltet wenn der wert eine zeit unter dem schwellwert ist.
ich hab das zum beispiel im einsatz um den htpc automatisch auszuschalten wenn der gesamtverbrauch eine weile unter dem des fernsehers alleine ist. der fernseher also eine weile aus ist und der htpc noch läuft.
gruss
andre
Hallo zusammen
und erst einmal vielen Dank für die vielen Hinweise und Anregungen
Hallo Puschel 74
die Bemerkung mit dem nicht existierenden notify machte mich etwas stutzig, daher mal aus der cfg rauskopiert incl der Readingsgroup Definition (vielleicht liegt da mein Fehler)
define kamera2aus notify userReadings FBDECT_17:power IF { ReadingsVal("FBDECT_17","power",0) > 7.0) (set intertek1 aus) }
attr kamera2aus disable 0
attr kamera2aus room Flur_oben
define rg:power readingsGroup .*:
attr rg:power alias Status
attr rg:power room Auswertung
ich bin der Ansicht, das wäre ein notify, doch ich freue mich über jeden Hinweis
Hallo Justme 1968
an THRESHOLD habe ich auch gedacht, doch ich bin davon ausgegangen, das dies nur mit Sensoren funktioniert und hatte es wieder verworfen - doch ich werde es nach dieser Aufmunterung probieren
Hallo der Lolo
ich habe deine fertige Definition mal einfach in mein DEF kopiert, leider schaltet die It steckdose auch jetzt nicht - schade
ja, aus ist auf off gemappt
grüsse tagedieb
Ich kann gar nicht sagen wieviele Stunden ich mit der Schaltung meines Backofens verbracht habe, mittlerweile ist es eine Verknüpfung von 2 notifys und zwei ats geworden... Das funktioniert für mich "meistens" so wie ich es mir wünsche. Falls nicht gibt es noch einen Schalter um die Automatik zu deaktivieren.
Wenn ich das nochmal anfasse möchte ich eine 99_myHerdUtils.pm dafür benutzen - ich habe aber keine Ahnung wie ich das bewerkstelligen soll. Deswegen liegt das Ding eher auf Eis.
@Tagedieb hast Du auch 7.0 ausprobiert statt nur 7? In meinem Fall brauche ich mich nicht auf ein power Reading zu beziehen weil bei Homematic Messteckdosen power in einem eigenem Kanal liegt. Kann sein das hier ein problem entsteht.
Hallo der-Lolo
Danke für die schnelle Rückinfo, ja ich habe 6.8, 7.01, 7 auch 7.* alles mögliche probiert - bisher ohne Erfolg, da die Powerangabe immer etwas variert - doch ich probiere und übe weiter 8)
jetzt versuche ich gerade den Hinweis von justme 1968 umzusetzten
viele Grüsse
mit THRESHOLD und watchdog schaut es etwa so aus:
define thresholdPlex THRESHOLD PCA301_077606:power:0:60 ||||Fehler:OK
define watchPlex watchdog thresholdPlex:Fehler 00:10 thresholdPlex:OK set plex off; trigger watchPlex .
TRESHOLD ist mit einem schwellwert von 60 watt definiert. wenn der wert drüber liegt geht THRESHOLD in den state Fehler, sonst in den state OK.
der watchdog feuert wenn das THRESHOLD device 10 Minuten lang im state Fehler bleibt. das ist schon alles.
du musst natürlich die schwellwerte und namen und eventuell die bezeichnungen für state anpassen :)
gruss
andre
ps: ein user reading in einem notify geht nicht. das ist von konzept völlig falsch. ein user reading ist ein attribut das in das device gehört in dem das zusätzliche reading erscheinen soll. auf das user reading kann man dann ein notify ansetzen.
Hallo,
define kamera2aus notify userReadings FBDECT_17:power IF { ReadingsVal("FBDECT_17","power",0) > 7.0) (set intertek1 aus) }
attr kamera2aus disable 0
Ich bin immer noch davon überzeugt das das notify nichts macht.
userReadings wird kein Event auslösen auf das das notify ansprechen wird vermute ich mal stark.
Aber der-Lolo hat ja schon eine Möglichkeit gepostet:
define kamera2aus notify FBDECT_17:power IF { ReadingsVal("FBDECT_17","power",0) > 7.0) (set intertek1 aus) }
attr kamera2aus disable 0
Grüße
Das hat der-lolo aber nicht gepostet... Das ist wieder eine Mischung aus IF und PERL.
Hallo,
ZitatDas hat der-lolo aber nicht gepostet... Das ist wieder eine Mischung aus IF und PERL.
Ja ok. Im Eifer des Gefechts ;D
FBDECT_17:power IF ([FBDECT_17:power:d] > 7) (set intertek1 aus)
Grüße
Hallo zusammen
danke für die helfenden Denkanstösse
Zitat:
Ich bin immer noch davon überzeugt das das notify nichts macht.
userReadings wird kein Event auslösen auf das das notify ansprechen wird vermute ich mal stark.
Puschel74 deine Überzeugung ist richtig - soo funktioniert gar nichts ;) eben die Erfahrung der alten Hasen - schön das ihr immer wieder Zeit für uns habt
ich bin dem Hinweis von justme 1968 nachgegangen - die TRESHOLD Variante kann ich zumindest schon einmal manuell schalten - einschalten der Cam, wenn > als 3 Watt und ausschalten wenn > 6 Watt -jetzt muss ich das ganze nur noch, nach justme`s ergänzendem Hinweis so überreden, das ich dazu nicht gebraucht werde :D
ich werde berichten oder weiterfragen :-[
grüsse
Hallo,
Zitatdie TRESHOLD Variante kann ich zumindest schon einmal manuell schalten - einschalten der Cam, wenn > als 3 Watt und ausschalten wenn > 6 Watt -jetzt muss ich das ganze nur noch, nach justme`s ergänzendem Hinweis so überreden, das ich dazu nicht gebraucht werde
Dann zeig mal her deinen Code.
Ich bin mir sicher das dir hier geholfen wird ;D
Grüße
Hallo Puschel74
danke für das tolle Hilfeangebot
define camaus watchdog FBDECT_17:power:3.00W 00:10:01 FBDECT_17:power:5.00W set Intertek1 aus
mit trigger camaus
schaltete dieser Code mir die Kamera aus, obwohl der Stromverbtauch im Limit lag
liegt das am triggern oder am Code?
ich würde mich später noch einmal melden, gerade ruft die Arbeit
gruss
Hallo,
zeig mal einen Ausschnitt aus dem EventMonitor wenn FBDECT_17 sendet resp. was FHEM empfängt.
Und mal einen Screenshot der Readings bitte.
Grüße
Hallo Puschel74
schön das die Hilfe so umfangreich ist
anbei die Ansichten (ich hoffe die Dateien sind nicht zu gross geworden)
ich habe eben noch einmal getriggert und da erschien im eventmonitor "nur" datum etc und watchdog camaus eine Schaltung der IT Steckdose erfolgte jetzt nicht
gruss Annette
Hallo,
direkt als Screenshot hättest du die Dateien auch anhängen können ;D
Aber ist jetzt egal.
Leider kann ich dir keine "Einzeiler" liefern.
Ich gehe davon aus das intertek1 die Befehle on/off kennt.
Ich gehe davon aus das du weißt wie du ein mehrzeiliges notify über das DEF eingibst 8)
define camaus notify FBDECT_17:power.* {
my $wert=ReadingsVal("FBDECT_17","power","0");
Log (3,"$wert");
if ($wert > 7.00) {
fhem("set intertek1 off") if(Value("intertek1") ne "off");
}
if ($wert < 4.00 ) {
fhem("set intertek1 on") if(Value("intertek1") ne "on");
}
}
Ungetestet und nur aus dem Kopf.
Erst das eingeben
define camaus notify FBDECT_17:power.* {}
und beim bearbeiten des DEF dann den Rest einfügen:
FBDECT_17:power.* {
my $wert=ReadingsVal("FBDECT_17","power","0");
Log (3,"$wert");
if ($wert > 7.00) {
fhem("set intertek1 off") if(Value("intertek1") ne "off");
}
if ($wert < 4.00 ) {
fhem("set intertek1 on") if(Value("intertek1") ne "on");
}
}
das es so aussieht.
modiy und auf ein Event von FBDECT_17 warten.
Es dürfte dann eigentlich nur einmal triggern wenn FBDECT_17 power sendet.
Ich hoffe ich hab nichts vergessen und es werden nicht zuviele Fehlermeldungen auftauchen.
Grüße
Edith: Wenn die "Langversion" klappt kannst du immer noch einkürzen anfangen und mit TRESHOLD und watchdog schauen.
Hallo Puschel74
vielen Dank! es hat auf Anhieb funktioniert
wenn ich deine Zeilen richtig gedeutet habe, ist das ist eine Alternative zum watchdog und als Hilfe für die Erstellung eines solchen mitgegeben worden?
zitat
Ich gehe davon aus das intertek1 die Befehle on/off kennt.
ja
Ich gehe davon aus das du weißt wie du ein mehrzeiliges notify über das DEF eingibst 8)
ja
da ich hier die Lösung so wunderbar präsentiert bekam, kann ich ja nun die Zeit nutzen und das gleiche mal mit watchdog versuchen :)
nochmals vielen Dank
Gruss Annette
Hallo,
Zitatvielen Dank! es hat auf Anhieb funktioniert
Das freut mich.
Diese Zeile
Log (3,"$wert");
kannst du übrigens wieder löschen.
Ich bau mir nur gerne in neue Codes so Zeilen ein um zu schauen ob überhaupt resp. wie weit mein Code funktioniert (ohne Fehlermeldungen).
Zitatwenn ich deine Zeilen richtig gedeutet habe, ist das ist eine Alternative zum watchdog und als Hilfe für die Erstellung eines solchen mitgegeben worden?
Äh nein.
Weder eine Alternative noch als Hilfe kann mein Code dienen - sorry.
watchdog bekommt dasselbe hin nur viel kürzer.
Mein Code ist einfach nur ein - ok, es funktioniert so aber so mancher dreht sich dabei weg ;D
Zitatkann ich ja nun die Zeit nutzen und das gleiche mal mit watchdog versuchen
Jep. Und im Hintergrund hast du einen langen und "hässlichen" Code der aber auch funktioniert.
Muss er ja nur solange bis du es mit watchdog geschafft hast.
GRüße
Hallo Puschel74
es ist immer wieder schön Hilfe zu bekommen um auch zu vergleichen und weiter zu lernen
doch mit watchdog werde ich mich mal intensiv beschäftigen :)
wo finde ich übrigends ein paar Hinweise zu disableForInterval? kann man hier von- bis eingeben? wenn ja
00:00:00 "bis" oder "- " ? in der Referenz habe ich nichts dazu gefunden :(
Grüsse Annette
Hallo,
Zitatwo finde ich übrigends ein paar Hinweise zu disableForInterval?
Forum oder Wiki würde ich mal raten (wobei aber auch meine Suchmaschine nicht viel hergibt damit).
Sorry aber da kann ich dir nicht helfen da ich das nicht benutze.
Grüße
Hallialoh
danke trotzdem
ich habe im Forum auch nur gefunden.....? ups - habe gerade gesehen, hatte einen Fehler im Suchfeld
ich glaube hier kann ich etwas als Antwort finden
ich wünsche noch einen schönen Abend
Gruss Annette