Neues Modul: Rolladensteuerung

Begonnen von ThomasRamm, 11 Januar 2016, 00:00:21

Vorheriges Thema - Nächstes Thema

willybauss

Zitat von: Invers am 10 April 2017, 21:46:57
Könnte vielleicht gehen, wenn man zwei Befehle in die Zeile des Rollo-Moduls schreiben könnte. Nach sleep muss ja immer ein Befehl folgen.

Bei mir sieht das z.B. so aus:

commandDown: 
set Rollo_1_EG AI;sleep 1;set Rollo_1_EG released

commandStopDown:
set Rollo_1_EG AI;sleep 0.3;set Rollo_1_EG released

commandStopUp:
set Rollo_1_EG A0;sleep 0.3;set Rollo_1_EG released

commandUp:
set Rollo_1_EG A0;sleep 1;set Rollo_1_EG released
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

KernSani

@willibauss,invers: Genau so hatte ich das gemeint...
@jazzor: das ROLLO-Modul weiß ja, wie lange jeder Befehl dauern soll, könnte daher alle benötigten Infos an ein Queue schicken, die diese dann optimiert abarbeitet. Wäre sicher machbar, aber eher was für lange Winterabende...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Jackeson

Hallo KernSani,
hab die Sache so gelöst (für mich Perfekt vielleicht braucht es noch jemand)
hab deine pm genommen und dieses verändert
zeile  42# 99,99.1,99.2,99.3,99.4,99.5,99.6,99.7,99.8,99.9,100",
zeile 134#"99","99.1","99.2","99.3","99.4","99.5","99.6","99.7","99.8","99.9","100");

allerdings nimmt er das an zeile 42#"0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9
aber nicht in zeile 134 (da kommen dann nur rote Zahlen bei der eingabe)

aber ich bin zufrieden dadurch kann man die positionen sehr genau bestimmen
Danke
aller anfang ist schwer

Invers

Zitat von: willybauss am 10 April 2017, 21:52:08
Bei mir sieht das z.B. so aus:

commandDown: 
set Rollo_1_EG AI;sleep 1;set Rollo_1_EG released

commandStopDown:
set Rollo_1_EG AI;sleep 0.3;set Rollo_1_EG released

commandStopUp:
set Rollo_1_EG A0;sleep 0.3;set Rollo_1_EG released

commandUp:
set Rollo_1_EG A0;sleep 1;set Rollo_1_EG released



Was bedeutet bei dir "AI" und "A0" ?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

willybauss

Zitat von: Invers am 11 April 2017, 21:55:57
Was bedeutet bei dir "AI" und "A0" ?

Ich steuere ein Funkmodul den Peha PHC-Systems an. Das System hat eigentlich batterielose EnOcean Taster, die ich mit einem CUL simuliere. Diese Funktaster senden beim Drücken einer Taste (runter, rauf) ein Funksignal (AI, A0) aus, beim loslassen der Taste ein weiteres (released).

Ein langer Tastendruck drückt sich dann halt aus durch Taste drücken, warten, Taste loslassen ==> AI, sleep 1, released.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Invers

Verstanden, danke.
Ich habe erfolgreich mein Rollo nach deinem Muster eingerichtet und es läuft (natürlich erst nach minimalen Anpassungen) optimal.
Es gibt tatsächlich bisher keine zeitverursachten Aussetzer bei Steuerung mehrerer Rollos gleichzeitig.
In der Sleepzeit lasse ich meine kleine Routine in der MyUtils laufen, um den Kanal einzustellen und den Status der FB zu prüfen, um ihn gegebenenfalls auf aktiv zu stellen. Falls die FB nämlich gerade nicht aktiv ist, brauche ich zum Start einen zusätzlichen Klick auf irgendeine Taste. Dann kann ich die Kanäle durchschalten. Für alles zusammen reicht eine Zeit von unter einer Sekunde. Darum reicht es, das Rollomodul eine Sekunde zwischen den Befehlen warten zu lassen.

Wäre ich technisch versierter, könnte ich sogar den Status aktiv oder passiv der FB abfragen. Man könnte z.B. per GPIO ein Signal vom Display abgreifen. Leider kenne ich da den entsprechenden Pin am Display nicht.
Würde das klappen, könnte die Sub in MyUtils "sehen", wenn die FB per Hand bedient werden würde. Könnte man nun noch die angezeigten Symbole als Signal lesen, wäre eine parallele Bedienung per Hand und per fhem möglich.
Zum Glück kann man aber auch so gut leben.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

KernSani

Zitat von: Jackeson am 10 April 2017, 23:43:56
hab deine pm genommen und dieses verändert
Welche hast du genau genommen, die aus Github - allow_all_positions oder eine der hier angehängten?

Danke,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Jackeson

Hallo,
hab die von (Antwort #502) von dir
aber so richtig glücklich bin ich noch nicht damit (mal gehts mal nicht(dann fährt er ganz hoch hmm!)
aller anfang ist schwer

KernSani

@Jackeson: Ich bin ohnehin überrascht, dass die so granulare Steuerung funktioniert. Wenn du ein Muster findest wann es nicht funktioniert, kann ich mal das Coding durchforsten, ob man da noch was optimieren kann... So ins Blaue ist das aber schwierig...

Ich wäre dir übrigens dankbar, wenn du die Version aus Github (s.o.) testen könntest, dann können wir das - wenn erfolgreich -in den Master übernehmen (du müsstest dann nur Zeile 42 wieder anpassen)

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Jackeson

#519
Hallo,
also habe jetzt aus Github nochmal herundergeladen und getestet
hab auch nichts davon verändert es bleibt bei 99,98,97 stehen also das ist ok die glatten Zahlen gehen
aber wenn ich 99.345 eingebe hat es es einmal funktioniert
danach hat er wieder bei 99 gestoppt also hat er die 99.345 wieder verloren
hier noch eine list von mir vieleicht mach ich was falsch?
Internals:
   NAME       OG.BueroMichael_Rollo
   NR         156
   STATE      closed
   TYPE       ROLLO
   stoptime   1492206193
   Readings:
     2017-04-14 23:43:10   command         position-99.985
     2017-04-14 23:43:10   desired_position 99.985
     2017-04-14 23:43:10   drive-type      modul
     2017-04-14 23:43:10   last_drive      drive-up
     2017-04-14 23:43:13   position        99.985
     2017-04-14 23:43:13   state           closed
Attributes:
   autoStop   0
   automatic-enabled off
   cmdIcon    half:remotecontrol/black_btn_MENUDroid open:remotecontrol/black_btn_CHUP closed:remotecontrol/black_btn_CHDOWN stop:remotecontrol/black_btn_RED down2:fts_blade_arc_close_00@yellow
   commandDown set OG.BueroMichael_Rolladen on
   commandDown2 set OG.BueroMichael_Rolladen position 99.345
   commandStopDown set OG.BueroMichael_Rolladen on
   commandStopUp set OG.BueroMichael_Rolladen off
   commandUp  set OG.BueroMichael_Rolladen off
   commandUp2 set OG.BueroMichael_Rolladen position 99.345
   devStateIcon open:fts_shutter_10@green:open  closed:fts_shutter_100@red:closed  half:fts_shutter_50@yellow:half  drive-up:fts_shutter_up@yellow:stop  drive-down:fts_shutter_down@yellow:stop position-100:fts_shutter_100@red:open position-99:fts_shutter_80@yellow:closed position-90:fts_shutter_80@yellow:closed position-80:fts_shutter_80@yellow:closed  position-70:fts_shutter_70yellow:closed  position-60:fts_shutter_60@yellow:closed  position-50:fts_shutter_50@yellow:closed  position-40:fts_shutter_40@yellow:open  position-30:fts_shutter_30@yellow:open  position-20:fts_shutter_20@yellow:open  position-10:fts_shutter_10@yellow:open  position-0:fts_shutter_10@green:closed
   eventMap   /position 99.985:down2/
   excessBottom 2
   excessTop  4
   group      1.Rolladen
   icon       fts_shutter@Violet
   resetTime  0
   room       OG.BueroMichael
   secondsDown 24
   secondsUp  26
   switchTime 1
   type       normal
   webCmd     open:closed:half:stop:position:down2


Könnte man nicht dieses ( stoptime   1492206193) als komando verwenden?
also "set myrollo  stoptime   1492206193 " da dies ja die Pos auch bestimmt.
aller anfang ist schwer

KernSani

@Jackeson:

Ich denke mal das Attribut
commandDown2 set OG.BueroMichael_Rolladen position 99.345
(ebenso commandUp2) ist unnötig. Das sendet ein position 99.345 an deinen Rollladen, aber der versteht nur on und off, oder?

Nochmal kurz zur Funktionsweise von ROLLO: Wenn du ein Kommando sendest (open, closed oder position xy) berechnet ROLLO, wie lange er laufen muss, um von der aktuellen Position an die Zielposition zu kommen. Er sendet CommandUp (und ggf. CommandUp2 direkt hinterher). Nach Ablauf der zuvor berechneten Zeit sendet er das in commandStop (bzw commandStopUp/commandStopDown) gepflegte Kommando.

Laut deinem List ist der Rollo aktuell auf 99.985, wenn du dann ein position 99.345 schickst, sollte er für einen Sekundenbruchteil (grob überschlagen 1/8 Sekunde) fahren... ob das mit Latenz im Netzwerk etc... zuverlässig klappt... Geht es da um das öffnen und schließen der Lamellen, oder wozu brauchst du eigentlich so eine exakte Steuerung?

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Jackeson

#521
Hallo KernSani,
es dreht sich hierbei um eine Jalousie bei der man die Lamellen ja leicht schräg stellen kann

wenn sie zu ist sind die Lamellen senkrecht man kann nicht reinschauen
wenn ich sie unter 1sek nach oben fahre kann ich rausschauen sind ca.45° aber keiner reinschauen(das möchte ich)
wenn sie länger als 1Sek hochfährt sind die Lamellen wagerecht so das ich rausschauen kann aber auch jeder reinschauen kann.

wenn ich sie hochfahre bsp.auf 95% und ihr dann sagen könnte gehe wieder 0,5 sek ab, hätte ich auch die gewünschte Stellung 45°

Es ist richtig mein rollo versteht nur on und off aber wieso nimmt er dann die Position "95","99" usw.an ?
also nur glatte Zahlen ?

also er nimmt bei mir nicht 99.345 er rundet immer auf 99 auf ,also geh ich mal davon aus das keine nachkommastellen genommen werden.
aller anfang ist schwer

willybauss

Ich würde es anders machen:
Es gibt ja separate Stop Kommandos für Auf und Ab: commandStopUp und commandStopDown

Hinterlege doch einfach in diesen beiden Kommandos außer dem Stop-Befehl einen weiteren, der nach dem Stop für eine halbe Sekunde in die andere Richtung fährt. Also in etwa so:

attr commandStopDown Stop;sleep 1;Up;sleep 0.5;Stop

Dann klappt das mit den Lamellen bei jedem Stop, egal wie weit der Rollladen vorher gelaufen ist.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Jackeson

Das war eine Super idee aber er Stop nicht,
wenn das ginge wäre das "Rollo modul" auch für  Jalousien der Hit
also hab ich:
commandStopDown  Stop;sleep 1;Up;sleep 0.5;Stop------- eingegeben Rollo Stoppt nicht mehr fährt bis hoch
commandStopDown set OG.BueroMichael_Rolladen Stop;sleep 1;Up;sleep 0.5;Stop ------Rollo Stoppt nicht mehr fährt bis hoch
commandStopDown set OG.BueroMichael_Rolladen on Stop;sleep 1;off;sleep 0.5;Stop------Rollo stoppt nicht
commandStopDown set OG.BueroMichael_Rolladen on;sleep 1;on;off;sleep 0.5;off------------------stoppt nicht
weiß echt nicht mehr weiter
aller anfang ist schwer

KernSani

Das müssen gültige FHEM Befehle sein, also:

commandStopDown set OG.BueroMichael_Rolladen off;sleep 1;set OG.BueroMichael_Rolladen on;sleep 0.5;set OG.BueroMichael_Rolladen off
(weiß jetzt nicht, ob das mit on/off passt, aber du verstehst die Idee?)

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...