Schalter und Werte im WebUI "aufhübschen"

Begonnen von SensorMane, 03 August 2017, 12:24:38

Vorheriges Thema - Nächstes Thema

SensorMane

Hallo Leute,

ich beschäftige mich schon länger mit mysensor-Netzwerk und FHEM und habe produktiv eine Garagentorsteuerung im Einsatz. Diese macht folgendes:

- Status der beiden Tore übermitteln (auf/zu)
- Über RFID können beide Tore per Transponder geöffnet werden
- Nach Öffnen eines/beider Tore wird standardmäßig nach 10 Minuten das/die Tore automatisch geschlossen
- Schalter "Dauer Auf" - setzt die vorher genannte Funktion außer Betrieb
- DHT22 Sensor - übermittelt Temp + Luftfeuchtigkeit von meiner Garage  ;)

Funktioniert auch alles prima! Lediglich die Bedienung und Darstellung im WebInterface krieg ich nicht besser hin, siehe Bild im Anhang. Ich möchte gerne dargestellt haben, ob die Tore offen oder zu sind. Der Button zum Auf/Zu-Machen soll auch grafisch dargestellt sein. Ich habe mir auch schon das Beginner-Tut zu FHEM angeschaut, aber da ist nur das Beispiel mit der Lampe aufgezeigt.

Bitte um einen Schubs wie ich das konfigurieren kann. Oder geht das vielleicht gar nicht?  :o

Danke!


Otto123

Hi,

ich habe das zwar ganz anders gemacht, aber die Lösung deiner Frage hat ja nicht viel mit mySensors oder Homematic zu tun.
Vielleicht hilft Dir meine Aufzeichnung dazu -> http://heinz-otto.blogspot.de/2016/07/garagentor-mit-fhem-bedienen.html


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

#2
Es hat schon ein klein wenig mit Mysensors zu tun, da das Schalten hier etwas anders funktioniert als bei anderen Devices (vielleicht (?) abgesehen von komplexeren 1wire-Devices, wo es im Wiki nach meiner Erinnerung hilfreiche Infos dazu gibt).

Eine fertige Lösung habe ich nicht anzubieten, aber folgendes:
- Einzelne zu steuernde Dinge in der Wirklichkeit bilde ich gerne über ein eigenes Device ab. Das wäre hier jedes Garagentor für sich.
- Hierfür bietet sich m.E. readingsProxy an (setze ich auch ein, allerdings nicht in der hier vermutlich sinnvollen Variante, mehrere Readings auf einen readingsProxy zu legen (offen/zu und den eigentlichen Schaltbefehl) EDIT: das funktioniert so vermutlich nicht, es geht wohl immer nur ein Reading. Hat man das, kann man das mittels devStateIcon schön visualisieren.
- Mehrere solcher Devices kann man dann wieder über eine readingsGroup zusammenfassen

Lezteres geht evtl. sogar direkt, allerdings habe ich da keine Erfahrung mit. Experten dafür würden vermutlich ein list des Sensors brauchen (code-Tags bitte nicht vergessen, zu finden über den smileys ;) ).

Poste aber doch auch mal den Sketch, das klingt wirklich interessant! RFID-ID's dürfen selbstverständlich geheim bleiben...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

smoudo

Das Thema hatten wir letzt schonmal.
Ich füge mal ein Bild ein wie es bei mir gelöst ist.
Wenn der Punkt gedrückt wird ändert sich der Status von "zu" über "wait" auf "auf"
Und umgekehrt.
define Garagentor dummy
attr Garagentor cmdIcon toggle:radio_checked
attr Garagentor devStateIcon open:fts_garage_door_10 move:fts_garage_door_50 closed:fts_garage_door_100
attr Garagentor group Garage
attr Garagentor icon fts_garage
attr Garagentor room Garage
attr Garagentor webCmd toggle


Grüße

Matze

smoudo

Wollte das ursprünglich auch mit mysensors lösen, hätte aber das relay nicht abgesichert schalten können über Funk. Schau mal im ESP Bereich da ist der komplette Code der einzelnen Device hinterlegt. Aber ansich
muss das nur auf die readings des Nodes geändert werden.

Grüße

Matze

SensorMane

Hallo Leute,

danke für eure Antworten!

Ich habe versucht das von smoudo mal umzusetzen. Was ich noch nicht verstehe: Wie bekomme ich den Bezug zu den Readings von meinem Sensor?  :o
Sprich: Wie kann auf die Werte eines Readings zugreifen und damit was machen?

Als ersten Schritt versuche ich mal den Schaltzustand von meinem Dauerauf Schalter darzustellen. Im Anhang sind die Readings des Node dargestellt, der Schalter ist rot markiert. Der Schalter heißt tripped2 und hat den Wert "1.0" wenn er gedrückt ist, ansonsten halt "0.0". Das Device selber hat den Alias "Garagentor" (MYSENSOR_100).

define Garage_Dauerauf dummy
attr Garage_Dauerauf devStateIcon off:ios-off on:ios-on-blue
attr Garage_Dauerauf group Garage
attr Garage_Dauerauf room Garage


Jetzt fehlt mir aber die Verknüpfung zu meinem Sensor Wert! Geht das direkt im devStateIcon? Soweit ich gelesen habe nicht! Also lege ich ein Modul DOIF an mit folgendem Inhalt:
define di_Garage_Dauerauf DOIF ([MYSENSOR_100:tripped2] eq "1.0")(set Garage_Dauerauf on) DOELSE (set Garage_Dauerauf off)
attr di_Garage_Dauerauf room Garage


Problem bzw. Frage: Das aktualisiert sich ja nicht von selber, nur wenn ich auf das cmd_1 drücke?! Und ist das überhaupt der richtige Weg bzw. gibt es einen einfacheren/besseren?

Bitte nochmal um einen Schubs  ;)

@Beta-User: Ich verwende ein fertiges RFID Modul. Dieses liefert nach Vorhalten eines Transponders ein Schalt-Signal an einem Eingang meines Arduino. Derzeit ist noch ein Bug im Sketch, wenn der DauerAuf gedrückt ist, lassen sich die Tore noch schließen bei Vorhalten eines Transponders und die LED-Anzeige "hängt"... trotzdem anbei der Sketch

Beta-User

#6
Wow, interessanter Sketch!


(Bin kein C-Experte, hätte die Abfrage in Zeile 285 aber so geschrieben: && !Dauerauf_Status, vielleicht hilft das).

Ansonsten finde ich die Repräsentation von Werten via Dummy eher umständlich, vor allem, wenn dann noch ein DOIF benutzt wird, nur um den Status abzubilden. Diskussion über Sinn und Unsinn von Dummies zum Vertiefen wäre hier, und an sich wäre das DOIF auch in der Lage, selbst den Status anzuzeigen bzw. zu repräsentieren. Da ich aber weder Experte für DOIF bin und es auch nicht werden möchte (dazu mehr hier), kann ich leider nicht erklären, wie. 

Nachfolgend mal ein (allerdings nicht ausführlich getestetes Beispiel, wie man aus einer Readingsgroup auch Befehle versenden kann:
define RG_Test readingsGroup MYSENSOR_102:status.*
attr RG_Test commands {'status1.on' => 'set $DEVICE status1 off', 'status1.off' => 'set $DEVICE status1 on' }
attr RG_Test valueIcon {state => '%devStateIcon','status1.on' => 'fts_shutter_automatic@green', 'status1.off' => 'fts_shutter_automatic@grey' }


Müßte man halt auf Deine Garagen-Geschichte umschreiben, aber im Prinzip ist erkennbar, wie flexibel das Modul ist.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

Magst Du das mal testen?
define RG_Garagen readingsGroup Torsteuerung:tripped3 Torsteuerung:tripped Torsteuerung:tripped1
attr RG_Test commands {'tripped.on' => 'set $DEVICE lockstatus3 toggle', 'tripped.off' => 'set $DEVICE lockstatus3 toggle' , 'tripped1.on' => 'set $DEVICE lockstatus4 toggle', 'tripped1.off' => 'set $DEVICE lockstatus4 toggle'}
attr RG_Test valueIcon {state => '%devStateIcon','tripped2.on' => 'fts_garage_door_40@red', 'tripped2.off' => 'fts_garage_door_40@green', 'tripped.on' => 'fts_garage_door_100@green', 'tripped.off' => 'fts_garage@red', 'tripped1.on' => 'fts_garage_door_100@green', 'tripped1.off' => 'fts_garage@red', }


Hättest Du was dagegen,  den Sketch bei den "Beispielen" verlinkt zu sehen?

Ein Vorschlag noch: Soll die Node auch in die loop() gehen, ohne dass FHEM verfügbar ist, könntest Du noch folgendes einfügen:
#define MY_TRANSPORT_WAIT_READY_MS 3000
Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

SensorMane

Teste ich morgen! Heute keine Zeit, Gartenarbeit..........  :-X

Bissl was habe ich schon geschafft, die ReadingsGroup sind auf alle Fälle schon das Richtige für mich. Zudem ist das sehr ausführlich in der Wiki erklärt. Anbei mal was beim Spielen bis jetzt raus kam!

Danke bis hierher !!!  :)

Beta-User

...meine Pflanzenabfälle sind schon auf dem Häckselplatz, und es hat kurz mal geregnet, da war Zeit für was anderes...

Sieht aber doch schon ganz (brauchbar ist fast zu wenig) aus, bin mal gespannt, was am Ende rausgekommen ist!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

SensorMane

Also ich habs jetzt versucht hinzubekommen. Hab deine Vorlage auf meine Vorgaben angepasst:
define RG_Garagen readingsGroup MYSENSOR_100:tripped MYSENSOR_100:tripped1
attr RG_Garagen commands {'tripped.on' => 'set $DEVICE lockstatus3 toggle', 'tripped.off' => 'set $DEVICE lockstatus3 toggle' , 'tripped1.on' => 'set $DEVICE lockstatus4 toggle', 'tripped1.off' => 'set $DEVICE lockstatus4 toggle'}
attr RG_Garagen room Garage
attr RG_Garagen valueIcon {state => '%devStateIcon', 'tripped.on' => 'fts_garage_door_40@red', 'tripped.off' => 'fts_garage_door_40@green', 'tripped1.on' => 'fts_garage_door_100@green', 'tripped1.off' => 'fts_garage@red', }


tripped: Status Tor 1 auf/zu
tripped1: Status Tor 2 auf/zu
lockstatus3: steuert Tor 1 auf/zu
lockstatus4: steuert Tor 2 auf/zu

Sieht dann so wie im Anhang aus, drücke ich auf einen der Links dann öffnet sich das dazugehörige Device. Sonst passiert aber nichts, die Tore werden nicht angesteuert. Verstehs nicht ganz, sollte ja eigentlich funktionieren? Warum werden auch die Icons nicht angezeigt?

Beta-User

Zitat von: SensorMane am 06 August 2017, 12:43:45
Verstehs nicht ganz, sollte ja eigentlich funktionieren? Warum werden auch die Icons nicht angezeigt?
Vermutlich liegt da der Schlüssel: Die readings sind nicht on und off, sondern wohl 1.0 und 0.0, jedenfalls, wenn ich Dein Bild richtig interpretiere.

Wenn es damit nicht klappt, würde ich folgendes versuchen:
Zitatattr RG_Garagen commands {'tripped' => 'set $DEVICE lockstatus3 toggle', 'tripped1' => 'set $DEVICE lockstatus4 toggle'}
Da es sowieso ein toggle ist, dürfte das sogar am Ende einfacher sein (ich hatte bei mir beim Testen gestern eine von "ein nach aus" und umgekehrt schaltende RG gebastelt, da braucht man beides).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

SensorMane

#12
 :)

Also ich habs jetzt! So schaut jetzt der Block für die Bedienung der Tore aus:
define RG_Garagen readingsGroup MYSENSOR_100:<Tor1>,tripped,<Tor2>,tripped1
attr RG_Garagen alias Garagentore:
attr RG_Garagen commands {'tripped' => 'set $DEVICE lockstatus3 toggle', 'tripped1' => 'set $DEVICE lockstatus4 toggle'}
attr RG_Garagen group Garage
attr RG_Garagen room Garage,Zuhause
attr RG_Garagen sortby 1
attr RG_Garagen style style="border:0px;;background:none;;box-shadow:none"
attr RG_Garagen valueFormat {($VALUE eq '0.0')?"fts_garage_door_10":"fts_garage_door_100"}
attr RG_Garagen valueIcon $VALUE


Und der Block zur Anzeige der Sensorwerte:
define rgGarage readingsGroup MYSENSOR_100:<%weather_humidity>,<Luftfeuchte>,humidity MYSENSOR_100:<%temp_temperature>,<Temperatur>,temperature1 MYSENSOR_100:<%control_home>,<Dauerauf>,tripped2
attr rgGarage alias Sensorwerte:
attr rgGarage group Garage
attr rgGarage room Garage,Zuhause
attr rgGarage style style="border:0px;;background:none;;box-shadow:none"
attr rgGarage valueFormat {temperature1 => '%.1f &degC', humidity=>'%.1f %%', tripped2 => ($VALUE eq '1.0')?"general_an":"general_aus"}
attr rgGarage valueIcon %VALUE
attr rgGarage valueStyle style="text-align:right"


Sieht dann wie im Anhang aus.

Eine Frage hab ich noch: Bei der readingsGroup für die Garagentore wird das Wort "Garage" angezeigt (siehe rote Markierung). Ich  weiß nicht, woher das kommt??? Jemand ne Idee? Bei den Sensorwerten wird ja auch nichts angezeigt!!

VIELEN DANK für die Hilfe!

Beta-User

Schön, dass das soweit geklappt hat.

Vermutung zu "Garage":
Das Garage dürfte der der Device-Alias sein, aus dem das reading stammt. Unten wird es nicht angezeigt, weil Du bei allen Readings angegeben hattest, von welchem konkreten Device Du es haben willst. Das ist bei <Tor2> nicht so.

Vielleicht reicht es, da auch das MYSENSORS_100: davor zu schreiben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

SensorMane

Ja richtig, war der Alias! Kann mit nonames unterdrückt werden.

Jetzt bin ich zufrieden (für heute  ;) ) !

Danke dir für deine Hilfe!

SensorMane

Übrigens zu deiner obigen Frage: Du kannst den Sketch gern bei den Beispielen verlinken - kein Problem!

Beta-User

Zitat von: SensorMane am 06 August 2017, 15:16:05
Übrigens zu deiner obigen Frage: Du kannst den Sketch gern bei den Beispielen verlinken - kein Problem!

Danke, wird gemacht!

Btw noch: Was ist das für ein RFID-Transponder (system), das Du zum Fernöffnen der Garage verwendest? Wenn ich das richtig interpretiere, gibt es (min.) 2 Sender, je einer für jedes Tor. Ist das System ebenfalls ein (MySensors-) Arduino-Eigenbau oder was anderes?

Interessiert vielleicht den einen oder anderen, der das nachbauen möchte ;) .

Schönes WE noch,

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

SensorMane

Das RFID Modul gibts (oder gab es) bei Conrad. Das läuft völlig autark vom restlichen System.

Ansonsten laufen alle Nodes mit NRF24 Modulen. In der Garage hängt ein System, das steuert beide Tore an und liefert die Sensorwerte. Ist ein arduino nano. Einiges habe ich in meinem Wiki dokumentiert, z.B. das Gateway.

Gruß