Was sagt die Konsole wenn du switchmode2 eingibst?
Beiträge von HoerMirAuf
-
-
Der switch2#state triggert sauber. Immerhin. Eigentlich sollte dann das Relais2 das Du in den Einstellungen konfiguriert hast auch demenstprechend schalten. Warum das jetzt nicht geht kann ich dir echt nicht sagen sollte nämlich. Sind die GPIO noch so eingestellt wie hier?
-
Bevor die Rules drin waren, wurde es richtig angezeigt
Die Rule hat darauf keine Auswirkung. Das virtuelle Relais das angezeigt wird ist ja Power2, das wird ja nirgends verwendet. Wie gesagt, Konsolen output wäre hilfreich
-
Jetzt zeigt mir das Hauptmenü aber immer den Zustand "OFF" am Switch2 an, völlig egal ob der geschlossen oder offen ist. Woran liegt das?
Wenn ich das richtig gelesen habe machst du das experimentell mit Brücken.
Was bedeutet denn geschlossen bei dir? Legst du den GPIO auf 3,3V oder GND?
idealerweise mal in einem 2ten Browser Tab die Konsole beobachten wenn die den GPIO schaltest ob sich der Switchstate ändert.
-
Würdest du einen mit 4 oder 8 GB Ram kaufen?
Hmmm ... der Preisunterschied liegt bei ca 23€.
Ich selbst käme wohl sogar mit 2GB RAM gut zurecht aber würde mir minimum den 4GB holen.
8GB müssten nicht unbedingt sein. Allerdings läuft bei mir auch Kodi und der Videospeicher wird ja vom normalen RAM abgezwackt.
Wenn man jetzt die "nur 23€ mehr" sieht und wie lange der Raspi (immer noch der PI2 Model B) jetzt bei mir 24/7 läuft, ist das glaub ich keine große mehr Investition.
Muss man bei 8GB zwangsläufig ein 64 bit System aufbauen?
Nö. Die 32Bit Umgebung arbeitet wie gehabt. Was sich ändert ist der Kernel der dann wohl auch 64Bit Anwendungen zulässt. Ist aber wohl noch eher experimentell, mit ein paar Vor und Nachteilen.
Für ein stabiles System wüprde ich erst mal beim 32Bit Kernel bleiben bis der 64 wirklich stabil ist.
-
-
Du hast die Rules falsch eingegeben.
Die Rule2 hängt auch noch mit an der ersten mit dran.
in der Konsole eingeben:
rule1 on switch2#state do rule2 %value% endon ENTER TASTE drücken
rule2 on clock#timer=1 do backlog power1 1; delay 10; power1 0; rule2 0 endon ENTER TASTE drückenrule1 1 ENTER TASTE drücken
(Rule2 benötigt keinen pulsetime1 10 für den Schaltimpuls)Bitte überprüfen was in den Rules stehet:
rule1 ENTER TASTE drücken
rule2 ENTER TASTE drücken
-
jo, passt.
Was kommt in der Konsole wenn du rule1 eingibst?
-
Welches Binary hast den überhaupt geflashed? Am Ende sind die Rules gar nicht mit einkompiliert?
-
ClockTimer1 steht auf einer Uhrzeit 2 Minuten in der Zukunft, Häkchen jeweils bei Zeitplän aktivieren, aktiv, wiederholen, Ausgang 1, Radiobutton Uhrzeit.
Die Ausgabe Time in der Konsole liefert auch die richtige Uhrzeit, welche ich mit Timezone 99 eingestellt hatte.
Mach mal bitte nen Screenshot
-
rule1 on switch2#state
// heißt für mich "bei Statusänderung" oder?
jepp
do rule2 %value% endon
// heißt für mich rule2 ausführen. Was steht in der Variable? Eine 1 oder eine 0, je nach dem Status von Switch 1 - zumindest hab ich das so verstanden. Ergo: Wenn Status 0 dann Rule2 0 heißt diese deaktivieren, umgekehrt bei Status 1 folglich Rule2 1 heißt diese aktivieren.
Die Rule wird nicht in diesem Sinn "ausgeführt" sondern aktiviert. Sprich die Trigger werden überwacht die in der Rule vorkommen und dann bei eintreten die Aktion ausgeführt.
In der Variable %value% steht immer der Wert des Triggers.
Genau, Wenn der Switch2#state 0 ist wird das commando rule2 0 ausgeführt, ist der switch2#state 1 dann rule2 1
Für den Syntax ist es egal ob du on oder 1 verwendest bzw. off oder 0 (1/0 Spart nur Zeichen da die ja in der Rule begrenzt sind)
Solange Rule2 deaktiviert ist, passiert also nichts. Wenn Rule2 aber aktiviert wird, schaut diese ob der Timer erreicht ist "on clock#timer=1" , wenn nicht passiert auch da nichts. Falls doch, power1 aktivieren und sich selbst deaktivieren.
exakt.
Ich glaub bis auf das Verständnisproblem bei der Variablen - hab ichs kapiert. Warum es aber nicht funktioniert, ist mir ein Rätsel.
Wie ist den der Clock Timer1 eingestellt? und was zeigt den das virtuelle Relais2 an wenn das Tot offen bzw, zu ist?
evtl Screenshots
-
EDIT: *****
oh .... eben nochmal die Rules Doku gelesen.
Du hast recht es sollte auch damit gehen.
rule1 on switch2#state=0 do rule2 1 endon
bzw.
rule1 on switch2#state=1 do rule2 1 endon
Ich hatte da immer Probleme das diese Auswertung nicht ging. Sondern nur die value abfrage Ich bin auch der Meinung das das nicht so alt ist in der Doku. *****
-
nur wenn sich der Switch-Status ändert, wird rule 2 aktiviert...
Fast. die Variable %value% enthält den Wert des Triggers.
Wenn also der Switch2 auf 1 geht dann wird die Rule aktivert, geht der Switch auf null dann wird die Rule2 deaktiviert.
Wenn der Reed-Kontakt ein Öffner ist dann ist der Switch=1 wenn das Tor offen ist, bzw. Switch=0 Wenn Tor zu.
Sollte der Reed-Kontakt ein Schließer sein, muss die Funktion von Switch2 mit Switchmode2 2 invertiert werden
Wichtig ist, das der Switch2 auf "1" steht wenn das Tor offen ist.
Rule2
wartet bis der Timer erreicht wird, setzt das Relais aktiv und deaktiviert sich dann selbst
Genau. Steht also Switch2 auf 1 (Tor offen) ist die Rule2 durch Rul1 aktiviert worden.
Wenn nun der Timer auslöst (der mit Action auf Regel gesetzt wurde) wird das Relay Power1 eingeschaltet und die Rule2 deaktiviert sich wieder.
Durch Pulsetime1 10 wird eingestellt das das Relais immer nur einen 1 Sekunden Impuse ausgibt. Eben wie wenn ich einen Taster kurz drücke und wieder loslasse. Das könnte man natürlich auch komplett in der Rule lösen:
rule2 on clock#timer=1 do backlog power1 1; delay 10; power1 0; rule2 0 endon
-
Andererseits ist SSH nicht so ein Speicherfresser und recht schlank und es soll schließlich eigentlich "immer" funktionieren
Außer eben es ist kein Speicher mehr frei in dem SSH arbeiten kann und genau das ist bei meierchen006 passiert.
Linux verwaltet ja seinen Speicher recht intelligent und gibt Arbeitspeicher für andere Anwendungen frei wenn diese nicht genutzt werden und ein anderer Prozess nach RAM schreit.
Braucht man dann z,B. SSH .... tja ... wo kein Speicher frei ....
-
Ok, Mem ist gut voll aber m. E. noch nicht bedrohlich voll.
Seh ich anders. 31 ist so gut wie gar nichts wenn eine Speicherintensive Anwendung ausgeführt wird. ( Und java [iobroker] ist bekanntlich ein absoluter Speicherfresser)
D.h. alles wird in Mini Portionen durch den Speicher gepresst bzw. auch noch durch den Swap der beim Raspi ja als Swap Datei angelegt ist. da addieren sich dann Kompremierung, Schreib Lesevorgänge auf die SD, die eh nicht schnell ist. Das kostet dann echte CPU Prformance, die sieht man hier ja nicht weil gerade kein Extremfall da ist. Da reicht ein mittelgroßes Update im Hintergrund schon aus und dann nudelt der Raspi ewig bis das durch ist, die anderen Anwedungen finden gar keinen Platz mehr, darum dann kein SSH etc. bis der Speicherfresser Prozess eeeeendlich durch ist.
Im extrem Fall beendet der Raspi sogar andere Prozesse wegen Timeout Fehlern.
EDIT:
Die Swap Datei hab ich bei mir deshalb auch deaktiviert. Zuviele Lese Schreibzugriffe die viel zu langsam sind. Bei großen Anwendungen bei denen die 100MB Daten im Swap liegen und mit 31mb RAM verarbeitet werden müssen und hin un her geschrieben und gelesen, schadet der mehr als er nutzt.
-
Sorry, dann hatte ich mich da wohl falsch ausgedrückt. Das soll für ein Garagentor sein. Wenn ich mal wieder vergessen habe es zu schließen (Switch2 = OPEN), soll es nachts um 22 Uhr (Timer1) geschlossen werden. Zum schließen genügt ein 5 Sek. Impuls am Relais 1
Null Problem.
Dann passt das mit der 2ten variante.
pulsetime1 10
rule1 on switch2#state do rule2 %value% endon
rule2 on clock#timer=1 do backlog power1 1; rule2 0 endon
rule1 1
Der Reedkontakt wird von der Rule überwacht. Ist dieser zum Schaltzeitpunkt des Timers (dann wird auch nur einer benötigt) offen, Dann soll geschaltet werden. Ich vermute das du nur einen Tastimpulse brauchst. Da ist dann natürlich wieder Pulstime wichtig wie du schon erwähnt hattest. Damit das Relais kurz anzieht und wieder abfällt. Sicherheitshalber deaktiviert sich die Rule2 nach Ausführung selbst, bis eben der Reed erneut geöffnet wurde.
-
Raspberry lässt sich anpingen ist aber nicht über ssh erreichbar, Passwortabfrage kommt auch nicht
Da wären CPU und RAM Auslastung interessant.
Mein Raspi läuft mit diversen Anwendungen teils ziemlich am Limit wenn ich die parallel nutze.
Wenn dann noch eine CPU/Ram intensive Anwendung dazu kommt, habe ich exakt Dein Fehlerbild.
CPU Last liegt dann bei 100% und der RAM hat noch kaum Speicher frei. Sehen kann ich das zum Glück noch über meinen HTTP Server auf dem ich ne Systemübersicht mit nem Bash-CGI Script darstellen lasse, Offenbar ist der Timeout da etwas geduldiger und die Rechnerlast des CGI Script's so klein das es trotzdem noch abgearbeitet wird.
Anpingbar, aber weder SSH noch sonst groß wie mehr erreichbar ... bis dann entweder der überlastende Prozess in einen timeout geht und stoppt und wieder Kapazität freigibt oder eben irgend ein anderer.
Ich kannmir gut vorstellen das das vom IoBroker kommt wenn da ein Adapter, warum auch immer, den Raspi "überlastet"
-
Pulsetime wird dazu nicht benötig, und soll auf 0 bleiben. Könnte sein das mehrfach getriggert wurde und wir für die Rule2 die Once Funktion gebraucht hätten Rule2 5 (Die Rule wird nur beim gleichen ereigniss eimal ausgeführt. Sprich der power2#state muss erst auf Null und dann wieder auf 1 bevor neu ausgelöst wird.
Ich hatte das so verstanden:
Wenn innerhalb von Zeit1 bis Zeit2 der Reedkontakt geöffnet wird dann soll ein Schaltimpulse erfolgen.
Wenn Timer1 erreicht wird, passiert erst mal gar nichts, außer ich ändere in dieser Zeit den Zustand vom Reed-Kontakt (Switch2)
Das wäre nach dem was ich verstanden hatte korrekt.Ist den der Timer auch mit Action auf "Regel" konfiguriert und aktiv?
Wenn ich das tue, dann wird das Relais ausgelöst, aber nicht dauerhaft, sondern es gibt im Sekundentakt 10 Impulse am D6 aus. Keine Ahnung weshalb das so
Es war auch von einem Schaltimpuls die Rede nicht von dauerhaft angezogenem Relais
Was du versuchst ist:
Wenn der Reed offen ist während der Zeit1 bis Zeit2 soll der Impuls abgegeben werden (oder das Relais von was wohin geschaltet werden)?
In dem Falle müssten die Rule getauscht werden. Ist der Reed OFFEN dann soll der Timer überwacht werden. Wenn ZU dann nicht.
Allerdings muss man solche Logiken ganz durchdenken. Wenn der Reed ZU ist während der Timer aktiviert und der Reed erst danach öffnet, dann wird niemals eine Antriggerung vom Timer erfolgen denn der Event ist ja bereist vorbei.
Solche Logischen Operationen sind mit Standart Rules kaum zu lösen. da brauchts dann eher Script statt Rules., bzw. zumindest "if else" einkompiliert im Binary.
Hier noch die Rules wenn der Reed der Hauptrigger ist, mit den genannten Einschränkungen:
rule1 on switch2#state do rule2 %value% endon
rule2 on clock#timer=1 do backlog power1 <on/off/toggle>; rule2 0 endon
Funktion:
Ich verwende jetzt den switch#state, der ist unabhängig vom zugeordneten Relais und fragt nur den Switch ab unabhängig vom im WebIF geschalteten Button. Evtuell muss da der Swichmode invertiert werden für switch2 wenn das Ganze dann nur geht bei geschlossenem Reed, statt geöffnetem.
Ok, Funktion: Ist der Reed offen, wird Rule2 aktiv und überwacht den Timer, triggert dieser, weil die eingestellte Zeit erreicht ist, dann wird der Power1 nach wunsch auf on/off/toggle geschaltet (bitte anpassen)
-
Für die Nachtzeit von zb. 22 Uhr bis 7 Uhr geht es ja mit einem Timer. Da ich viel unterwegs bin wäre es gut das die Pumpe in der Woche nur bei Anwesenheit aktiv ist.
Naja ... die Timer lassen sich ja auch über MQTT aktivieren/deaktivieren oder mit websend.
Also z.b. Mit Zentral-Aus/Anwesendbefehl, etc.
-
GuMo
Meine Erwartung war: Wenn ich jetzt das von dir besagte Virtuelle Relay an D1 habe (irgendwann mein Reed-Kontakt, jetzt ne Brücke) und diesen auf GND oder +3,3 ziehe, dass dort der entsprechende Status im Menü angezeigt wird.
>> das passiert aber nicht
Was habe ich falsch konfiguriert?
Virtuelle Relais an D1? Nach Deiner Config ist das virtuelle Relais an D2(GPIO4). Der Button2 ist an D1 (GPIO5). Wenn D1 (GPIO5) dann kurz
(Tastimpuls !! Button=Taster, ich glaub Tasmota reagiert standartmäßig erst auf wieder öffnen des Tasteres. Da hab ich nicht richtig aufgepasst, der Reed muss auf Switch2 konfigurieren, nicht Button)
auf GND bzw. 3,3V gelegt wird sollte D2 geschaltet werden, sich also der Zustand für den Reed ändern. Die Config ist soweit ok. Was ich mir jetzt vorstellen kann ist, das der GPIO ohne Pullup/Pulldown Widerstand keinen klar devinierten Zustand hat und nicht erkennt ob er auf GND oder 3,3V gezogen wird.