Hallo,
ich möchte für die Alarmanlage eine Signalleuchte ansteuern die
blinken soll(1sec.Takt).
Gibt es da eine einfache Lösung?
Die Ansteuerung erfolgt über eine Relaiskarte (K8IO)
VG
Nein.
Und zwar vor allem weil durch die entstehende Funklast die 1% Grenze recht schnell erreicht würde.
http://www.fhemwiki.de/wiki/1%25_Regel (//www.fhemwiki.de/wiki/1%25_Regel)
Das Blinken muss daher immer in der Lampe selber passieren, die mittels FHEM nur ON geschaltet wird. Ich habe dazu BlinkLEDs verwendet, die das Blinken schon Eingebaut haben.
Deswegen schalte ich über die Relaisplatine, um die Funklast nicht zu
überschreiten.
Mit der LED ist auch eine gute Idee, möchte aber auchzusätzlich noch
einen Schrittmotor in regelmäßigen Takten ansteuern(Zukunft).
aus der commandref:
define a7 at +*{3}00:00:02 set lamp on-for-timer 1 # Blink 3 times
@jhohn,
Das ist für den Geplante Zweck keine Gute Idee. Die Lampe soll längere Zeit blinken. Und wenn man das per FHEM macht, ist innerhalb kürzester Zeit das "Funkkontingent" verbraucht.
Gruß
Dirk
Zitataus der commandref:
define a7 at +*{3}00:00:02 set lamp on-for-timer 1 # Blink 3 times
Ja, bei 3x oder so ist das keine Problem. Die Scharfanzeige einer Alarmanlage blinkt aber im Normalfall Stunden, und selbst wenn das Blinken für ein Warnlicht im Fall der Auslösung ist wird's schon eng. Da wirst du aber ggf. schon nach wenigen Minuten seltsame LOVF Fehler bekommen. Daher ist gerade diese Möglichkeit eher gefährlich, wenn a) der Schaltabstand kurz ist (weniger als Minuten) und die Frequenz hoch.
Nur mal ein Rechenbeispiel:
Jedes FS20 Kommando verbraucht mindestens 210 ms Sendezeit. Das 1% Limit gibt dir 36 Sekunden pro Stunde. D.h. nach 171 FS20 Kommandos pro Stunde ist Schluss.
Gesetzt den Fall, du machst sonst NICHTS ANDERES, dann hast du mit einer in 1hz blinkenden Lampe, dein gesamtes Sendekontingent in weniger als 3 Minuten aufgebraucht.
Das das CUL da dynamisch das Sendezeitkonto nachfüllt durch Gutschrift von 10 ms Sendezeit je Sekunde hilft da wenig: Wenn das Konto leer ist muss man für nur EINMAL an/aus 42 Sekunden warten.
und wenn für jedes Blinken das Relais anziehen soll, dann ist das Relais auch bald "erschöpft".
Hallo,
Achtung!
Die Blinkleuchte soll über eine K8IO angesteuert werden.
Diese ist i. d. R. mit einem AVR-NET-IO verbunden welcher per Kabel im Netzwerk hängt.
Da die Schaltbefehle, nehme ich mal an, übers Lan gehen sollte doch kein Funkkontingent verbraucht werden.
Sorry das es jetzt OT wird aber ein kurzer Zweizeiler - gerne auch per PM - der meine Schleier lüftet wäre nett.
Grüße
ZitatDa die Schaltbefehle, nehme ich mal an, übers Lan gehen sollte doch kein Funkkontingent verbraucht werden.
Über LAN natürlich nicht, das stimmt.
Ich halte es prinzipiell aber trotzdem für keine Gute Idee, Blinken über FHEM zu steuern und würde das immer versuchen im Aktor lokal zu machen. Man denke nur mal an den Müll im Log.
Über 7000 Einträge pro Stunde.
Nebenher: die Lebensdauer von Relais ist ein sehr komplexes Thema, Stichwort hier "BT10" (= nach wieviel "Schaltspielen" sind 10% der Relais IN DER GEGEBEN APPLIKATION ausgefallen) Relais haben je nach Bauart, Lastart, Stromstärke, Schaltfrequenz, Umgebungstemperatur, Spannung und ungefähr einem Dutzend weiterer Faktoren recht unterschiedliche Lebensdauern. Die Lebensdauer bewegt sich dabei in Bereichen von 10.000 - Millionen Schaltspielen. Gehen wir mal von einer Million aus. Dann ist bei 1 Hz das Relais schon nach 277 Stunden kaputt. Wenn das also zur Anzeige der Scharfschaltung verwendet würde und die im Schnitt 6 Stunden pro Tag ist, dann wäre das Relais nach ca.5 Wochen hin.
Selbst wenn das Relais nun supertoll ist und 10x länger hält, reicht das gerade mal für ein Jahr.
Für den Anwendungsfall wäre ein Relais also auch keine gute Idee.
Hallo,
Danke erstmal für die Erklärung der Relais.
Als Automatiker habe ich jeden Tag mit den Teilen zu tun - noch.
Dank SPS und Transistoren werden die (für kleine Lasten) und Signale, langsam aber sicher, überflüssig.
Und es spricht ja auch nichts dagegen das Relais gegen einen Transistor bzw. Transistorschaltung zu tauschen um die LED
mit 1 Hz an zu steuern.
Vorwiderstand berechnet und aufgerundet (je nach E-Reihe und Geldbeutel) mit nem schicken BC-Irgendwas (müsst ich nachschauen)
und die LED kann blitzen.
Aber wie du ja zu Beginn geschrieben hast
ZitatÜber LAN natürlich nicht, das stimmt.
kann er die K8IO beruhigt über FHEM ansteuern und die LED blinken lassen.
FHEM resp. das Funkkontingent werden dadurch nicht beeinträchtigt.
Das ist auch für mich interessant da ich ebenfalls eine K8IO und einen AVR-NET-IO einsetze bzw. einsetzen möchte.
Grüße
P.S.: Und die "Kernfrage" ging ja um das Funkkontingent.
Und nun BTT bitte.
Edit:Natürlich gehen genauso auch Ansteuerungen über Onewire (wenn ich mich nicht täusche) und I2C und was es sonst noch
an Übertragungsmöglichkeiten gibt (Industrie mal aussen vor).
Ich habe mir mal von einem echten Elektronik-Genie eine Schaltung entwerfen lassen nach Vorlage eines sog. Lebenslichtes. Ist ausgerichtet Auf 1wire mit einem Schaltaktor zb. DS2413/DS2408/DS2406. Kann sicherlich auch anderswo eingesetzt werden. Verbraucht extrem wenig Strom (zieht schließlich Leistung aus meinem 1wire 5V Kreis) und blinkt mit den LEDs vor sich hin. Takt: ca 5sek. lief bis jetztt nur im Testaufbau
Hat 3 Kontakte: GND,+5V und GND-Schalter
Steuert 2 LEDs, zb grün und Rot.
Wenn die GND-Schalterleitung mit GND verbunden ist leuchtet die eine LED, wenn die LEitung von GND getrennt ist leuchtet die andere LED.
Hintergrund der Schaltung ist die Anzeige des Zustandes einer Alarmanlage: Anlage an/aus. Alle Fenster zu/Etage 1..x alles gesichert etc.... ohne die Frequentz über fhem zu steuern
Falls interesse kann ich sie hier posten
Wie gesagt verwende ich dazu eine blinkende LED, die an einem FS20 SM8 8-Kanal-Schaltmodul hängt. 2 Anschlüsse. Einziges anderes Bauteil: ein Vorwiederstand.
(Genau genommen habe ich da sogar 2 Blinkende LEDs dran. Durch die leicht abweichende Blinkfrequenz ergibt das recht lustige Effekte.)
FHEM Schaltkommando
set scharfanzeige on
Einfacher geht eigentlich nicht finde ich.
Hallo,
das stimmt allerding.
Einfacher geht es wirklich nicht mehr.
Grüße
Ich muß jetzt mal kurz mein eigendliches Anliegen erläutern.
Ich möchte nicht ein Jahr eine Lampe blinken lassen ;-).
Es sollte nur eine grundsätzliche Frage sein, ob es möglich ist mit einem
festen Takt ein Relais ansteuern zu können.
Mein Ziel ist es einen Heizungsmischer anzusteuern. Alles funktioniert schon im Probebetrieb
mit dem Modul Threshold ohne Probleme.
Es ist nur noch ein kleines Problem, und zwar ehe die Temperaturänderung erfaßt wird, ist
der Motor schon zu weit gefahren.
Und das möchte ich verzögern, damit der Motor eine längere Laufzeit hat.
VG Steve
Welche Zeiträume brauchst du?
Ich würde das Relais 2s anziehen und 3s abfallen lassen
Wie oft? also über welchen Zeitraum?
Ich habe zwei Relais die den Mischer auf und zu fahren.Also ist die Anforderung des jeweiligen Relais ist nur kurz zur Korrektur der Vorlauftemperatur. Das ist natürlich auch abhängig von den Verbrauchern der Heizung.
Ich wollte es einfacher gestalten mit dem PID-Regler,aber der funktioniert nicht mit 1Wire, zumindest habe ich nichts positives gehört.
Ich sehe, ich habe Schwierigkeiten mich korrekt auszudrücken, denn irgendwie beantwortest du meine Frage nicht.
Ich will doch nur eine einfach nur Wissen: Wie lange soll das Spiel mir dem
2s anziehen und 3s abfallen lassen
so gehen?
Typischerweise 4-5 mal hintereinander und das alle 20 Minuten mal? Oder öfter? In kürzeren Abständen? Längere Zeiträume? Alle 5 Minuten wird nachgeregelt und dann geht's 20x an/aus/an/aus...?
Andererseits: Eigentlich ist alles Notwendige in diesem Thread schon gesagt. Wenn's nicht um Funk geht ist die Anzahl der Befehle erstmal egal, wie man es in etwa mit FHEM macht, steht auch schon weiter oben, warum man es per Funk besser nicht macht, wenn wir von mehr als 4-5 solcher An/Abschaltunge am Stück reden steht auch schon oben.
Es wird nicht über Funk geschaltet, und die Häufigkeit und Länge hängt von der Vorlauftemperatur ab.(also keine genaue Angabe möglich)
Ich habe wie oben beschrieben in die cfg geschrieben, funktioniert aber bis jetzt noch nicht.(bin noch am tüfteln)
Relais bleibt konstant angezogen.
Zitat(also keine genaue Angabe möglich)
Nicht mal eine Korridorabschätzung? Aber okay, nicht so wichtig.
ZitatIch habe wie oben beschrieben in die cfg geschrieben, funktioniert aber bis jetzt noch nicht.
Was genau hast du reingeschrieben?
Hier mal ein kleiner Auszug ;-)
Schlag nicht die Hände über den Kopf-es funktioniert.(außer Trigger)
Ich habe Dummys erstellt, da die Rückmeldung vom Netio immer Fehler bringt
und ich so nicht loggen kann.
#------------------------------------------------------------------------------
#Relais Mischer
#-----------------------------------------------------------------------------
define AUF ECMDDevice RELAIS 01
attr AUF room Mischer
define AUF1 dummy
attr AUF1 eventMap on:on off:off
attr AUF1 room Heizung
define AUF1_def notify AUF1 set AUF %
define weblink_MischerZU weblink fileplot Log_Mischer_ZU:MischerZU:CURRENT
attr weblink_MischerZU room Mischer
define weblink_Mischer weblink fileplot Log_Mischer_ZU:Mischer:CURRENT
define Log_Mischer_AUF FileLog /var/InternerSpeicher/fhem/log/Mischer-%Y.log AUF1
#------------------------------------------------------------------------------
define ZU ECMDDevice RELAIS 02
attr ZU room Mischer
define ZU1 dummy
attr ZU1 eventMap on:on off:off
attr ZU1 room Heizung
define ZU1_def notify ZU1 set ZU %
define weblink_MischerAUF weblink fileplot Log_Mischer_ZU:MischerAUF:CURRENT
attr weblink_MischerAUF room Mischer
define Log_Mischer_ZU FileLog /var/InternerSpeicher/fhem/log/Mischer-%Y.log ZU1
#------------------------------------------------------------------------------
define Relais_Trigger_ZU at +*{3}00:00:02 set ZU on-for-timer 1 # Blink 3 times
define Relais_Trigger_AUF at +*{3}00:00:02 set AUF on-for-timer 1 # Blink 3 times
#-------------------------------------------------------------------------------
#Threshold
#-------------------------------------------------------------------------------
define Mischer_AUF THRESHOLD Heizung_VL:temp:0.2 AUF1:off:on
attr Mischer_AUF room Mischer
define Mischer_ZU THRESHOLD Heizung_VL:temp:0.2 ZU1:on:off
attr Mischer_ZU room Mischer
Hallo,
Sorry wegen der dummen Frage.
Wozu ist das
attr AUF1 eventMap on:on off:off
gut?
Grüße
Zitat von: Puschel74 schrieb am Mi, 13 Februar 2013 21:20Sorry ...
eben! Bitte niemanden vorführen ;) Danke.
Gruß
Thomas
???
Das fragst du dich wirklich? ;)
Ich hätte auch schreiben können: "nicht aufs Glatteis führen".
Es soll FHEM-Anwender geben, die die commandref nicht mit dem Trichter verinnerlicht haben oder erst seit kurzem "dabei sind" ;)
Ein Hinweis, dass dieser Befehl zu nichts führt, wäre evtl. besser gewesen.
Gruß
Thomas
Hallo,
tja eben weil ich die commandref alles andere als verinnerlicht habe wollte ich eigentlich nur wissen was Steve mit diesen
Zeilen bezwecken möchte um nicht einfach nur einen Hinweis zu geben das diese Zeilen nichts bezwecken würden.
Es könnte ja sein das sich bezüglich der Dummys was geändert hat und ich hab das nicht mit bekommen.
Ich wollte Steve alles andere als
Zitataufs Glatteis führen
Grüße
das kommentiere ich jetzt mal nicht.
Gruß
Thomas
Puschl74 ist eigentlich Trollunverdächtig.
zur Sache.
Zitatdefine Relais_Trigger_ZU at +*{3}00:00:02 set ZU on-for-timer 1 # Blink 3 times
define Relais_Trigger_AUF at +*{3}00:00:02 set AUF on-for-timer 1 # Blink 3 times
Das macht in der Tat so nichts, weil der Auslöser fehlt.
at +
heisst: in x Stunden:minuten:sekunden
soweit ich weiss (TM) heisst
at +*{3}
in Stunden:minuten:sekunden im Abstand von Stunden:minuten:sekunden 3x
Daher gibt es KEIN STARTDATUM so wie du das geschrieben hast, kein Event, das die Ganze Aktion auslöst.
Und tatsächlich ist es auch so, dass das was jhon geschreiben hat
define a7 at +*{3}00:00:02 set lamp on-for-timer 1 # Blink 3 times
Aus der Sektion "relative ones" kommt, also UNVOLLSTÄNDIGE Codebeispiele sind, die nicht alleine Funktionieren.
du musst die Aktion aber irgendwie auslösen also triggern:
define Relais_Trigger_ZU notify (irgendein Ereignis) at +*{3}00:00:02 set ZU on-for-timer 1
Nur ABSOLUTE "At" befhele brauchen keinen Trigger, weil dann die Uhrzeit selbst der Trigger ist.
also
define "immer_morgens" at *08:00:00 set Kaffemaschine on
geht.
Aber
define "immer_morgens" at +08:00:00 set Kaffemaschine on
macht NICHTS, weil FHEM nicht weiss, wann +08:00:00 sein soll.
Hi Steve,
wie ich sehe bist du an der Mischersteuerung.
(Link (http://forum.fhem.de/index.php?topic=10707.0))
Habe es bei mir so gemacht:
define n_Vorlauf notify n_Vorlauf {\
my $TempAussen=ReadingsVal("temp_aussen","temp","nA");;\
my $TempVorlauf_ist=ReadingsVal("vorlauf_ist","temp","nA");;\
my $Steilheit=1.1;;\
my $TempVorlauf=((($TempAussen - 20) * (0 - 1) * $Steilheit ) +20);;\
if ($TempVorlauf < $TempVorlauf_ist) {fhem("set Rel3 on;; set Rel2 on;; sleep 0.5;; set Rel2 off")};; \
if ($TempVorlauf > $TempVorlauf_ist) {fhem("set Rel3 off;; set Rel2 on;; sleep 0.5;; set Rel2 off")};;\
################
Rel3 ist für die Umschaltung Links/Rechts
Rel2 ist Motor An/Aus
kleiner als 0.5 Sekundenschritte machen keinen Sinn (Trägheit der Schaltung und Relais)
Das notify wird über at alle 30 Sek. ausgeführt.
So gleicht sich bei mir die Vorlauftemperatur an.
VG
Olaf
Hi Olaf,
wie Du siehst bin ich noch voll am tüfteln, und habe einen anderen Weg genommen.
Mein Problem ist wie man oben auch sieht, das ich nur mit Standarts arbeite, die ich mir
aus anderen Beiträgen herauskopiere.
Mir fehlt leider die Zeit, mich noch mehr mit Perl zu beschäftigen.
Daher ist mein Ansatz bei weiten nicht so Elegant wie deiner.
Geht dein Mischermotor von der Mechanik her?
VG Steve
Hi Steve,
ich habe auch erst vor ein paar Wochen angefangen.
Try and Error...
Der Getriebemotor funktioniert soweit vom Drehmoment.
Ich habe jedoch das Problem, dass er noch zu schnell dreht.
Brauch jetzt noch eine ca. 1/10 Untersetzung.
VG
Olaf
Hi Püschl74,
du hast die Frage gestellt, was "attr AUF1 eventMap on:on off:off" bedeutet.
Ich habe es aus einem Beitrag herauskopiert, und kann die genaue Funktion nicht
kommentieren.
Ich brauchte nur einen Dummy für die Relais des NETIO,da ständig Fehlermeldungen im Log aufgelaufen
sind, und ich diese nicht in einen Plot schreiben kann.
VG Steve
Hallo und Guten morgen zusammen,
ich geh mal davon aus das ich kein Troll bin - danke Zrrronggg!
Aber so wie auch bei meinen Lehrlingen in der Firma ---
wenn einer etwas macht (auch wenn es falsch ist) will ich erstmal wissen warum er das so gemacht hat und was er sich davon
verspricht - versprochen hat.
Daher stelle ich auch mal gerne "dumme" Fragen.
Klar geht es schneller wenn ich sage - nicht so, mach das so.
Aber der Lernerfolg ist dann etwas geringer ;-)
@Steve
Das ging mir am Anfang auch so :-)
Copy&Paste in der Hoffnung das der Code funktioniert. Klappt, aber nicht immer.
Also gut:
Die 2 Zeilen mit evenMap on:on off:off kannst du wieder rauswerfen.
Diese sollten zwar keine Probleme verursachen aber wir hatten auch schonmal ein eventMap on:off off:on und da wird es dann
in fhem richtig lustig.
Wenn du deinen 2 Dummys ein on und off entlocken willst reicht auch ein
attr <Device> webCmd on:off
Wenn deine beiden Dummys nur als Anzeige und "Zwischenspeicher" für Stati dienen sollen brauchst du auch kein webCmd.
Das wäre nur notwendig wenn diese Dummys auch Aktionen auslösen sollen wenn du sie betätigst.
Jetzt wäre nur noch interessant ob Zrrronggg!s Tipp mit dem notify geholfen hat und deine Mischersteuerung das macht was du
willst.
Grüße
Hallo,
also ich habe von Zrrronggg den Vorschlag übernommen und habe eine
Fehlermeldung->Relais_Trigger_ZU return value: Unknown command on, try help
In der cfg steht->define Relais_Trigger_ZU notify ZU1 on at +*{3}00:00:02 set ZU on-for-timer 1
Die Funktionskette fängt an bei Mischer_ZU(Threshold), geht über ZU1(Dummy)und endet bei ZU(Relais01 NETIO)
Versuche jetzt erst einmal meinen Dummy zu optimieren.
Zitatdefine Relais_Trigger_ZU notify ZU1 on at +*{3}00:00:02 set ZU on-for-timer 1
Geht nicht.
Wenn du willst das ZU1 nur mit dem Wert "on" triggert, muss es heissen:
define Relais_Trigger_ZU notify ZU1:on at +*{3}00:00:02 set ZU on-for-timer 1
notify ZU1 -> irgendein Event von ZU1 löst aus
notify ZU1:on -> nur wenn das Event "on" ist, wird ausgelöst
notify ZU1:on.* -> jedes Event, das mit "on" anfängt löst aus.
Hab jetzt in dr cfg folgends stehen:
>define Relais_Trigger_AUF notify AUF1:on at +*{3}00:00:02 set AUF on-for-timer 1
Logfile Fehler:
> 2013.02.15 16:42:19 2: dummy set AUF1 on
> 2013.02.15 16:42:19 1: devspec2array +*{3}00:00:02: Nested quantifiers in regex; marked by <-- HERE in m/^+* <-- HERE {3}00:00:02$/ at /usr/bin >/fhem.pl line 777.
> 2013.02.15 16:42:19 3: Please define +*{3}00:00:02 first
> 2013.02.15 16:42:19 3: Relais_Trigger_AUF return value: Please define +*{3}00:00:02 first
Muss ich erstmal selber testen.