Seite 8 von 9

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 10. Mai 2019 23:04
von Selter
Hallo zusammen,

ich klinke mich hier mal ein ;)

Den ganzen Abend beschäftige ich mich nun schon mit der Integration eines Shelly2.5 als Rollladenschalter. Dabei hat mir dieser Thread schon sehr weiter geholfen. Vielen Dank an dieser Stelle dafür!

Momentan erhalte ich aber noch folgende Meldungen im Log:

Code: Alles auswählen

[WARN ] [rm.AbstractFileTransformationService] - Could not transform 'stop' with the file 'shelly.map' : Target value not found in map for 'stop'
[WARN ] [eneric.internal.generic.ChannelState] - Command '' not supported by type 'RollershutterValue': null
Meine "shelly.map":

Code: Alles auswählen

UP=up
DOWN=down
STOP=stop
0=close
100=open
open=0
close=100

Code: Alles auswählen

// THINGS
Thing topic shelly25_1 "Shelly: Shelly2.5 #1" @ "MQTT" {
	Channels:
		Type rollershutter : EG_ku_r_tuer 		"Küche Rollladen - Tür"   	[ stateTopic="shellies/shellyswitch25-XXXX/roller/0", commandTopic="shellies/shellyswitch25-XXXX/roller/0/pos", transformationPattern="MAP:shelly.map" ]
        Type number : Shelly25_1_Temperature   	"Shelly25 #1: Temp"   		[ stateTopic="shellies/shellyswitch25-XXXX/temperature" ]
        Type number : Shelly25_1_Energy        	"Shelly25 #1: Energy" 		[ stateTopic="shellies/shellyswitch25-XXXX/relay/energy" ]
	}

Code: Alles auswählen

// ITEMS
Rollershutter   EG_ku_r_tuer                "Küche Rollladen - Tür" <rollershutter>     (gM,gR,Gtest,Gshelly,Grollo,Gku) [ "Switchable" ] {channel="mqtt:topic:mosquitto:shelly25_1:EG_ku_r_tuer"}
Number          EG_ku_r_tuer_Temperature    "Shelly25 #1: Temperature"                  (Gest)   {channel="mqtt:topic:mosquitto:shelly25_1:Shelly25_1_Temperature"}
Number          EG_ku_r_tuer_Energy         "Shelly25 #1: Energy"                       (Gtest)  {channel="mqtt:topic:mosquitto:shelly25_1:Shelly25_1_Energy"}
Und was hat es mit der 2. Meldung auf sich?

Code: Alles auswählen

Command '' not supported by type 'RollershutterValue': null
Image 170.png
Laut Log gibt es Temperaturwerte:

Code: Alles auswählen

EG_ku_r_tuer_Temperature changed from 46.54 to 46.70
... aber die werden nicht in der Sitemap angezeigt.

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 10. Mai 2019 23:08
von udo1toni
Man benutzt kein Setpoint Widget, um einen Rollladen zu fahren :)

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 10. Mai 2019 23:15
von PeterA
Kalibrierung des Rolladens durchführen über die Shelly App oder das Web If. Und den Mapping Kram weglassen.
Und dann den Rolladen direkt über die Positionen ansteuern.

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 10. Mai 2019 23:20
von peter-pan
Hab's auch grad ausprobiert mit einem Dummy. Setpoint ist falsch. alles andere geht richtig. Bei dem Switch Item solltest du dann noch open und close tauschen.

Code: Alles auswählen

Switch item=EG_Bad_Rolladen mappings=[0="open",100="close"]
;)

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 11. Mai 2019 00:16
von udo1toni
Setpoint: Einen numerischen Wert erhöhen oder verringern. Dabei kann man Ober- und Untergrenze sowie Schrittweite definieren. Pfeil runter: Wert verringern Pfeil rauf: Wert erhöhen.
Da "0%" beim Rollladen aber "oben" bedeutet, ist Setpoint einfach ungeeignet zur Rollladensteuerung, zumindest, wenn man die Tasten und die Laufrichtung in Einklang bringen will.
Also besser, um einfach rauf-stop-runter zu steuern ein Rollershutter Item mit Switch Widget verwenden (dadurch wird automatisch ein Rollershutter Widget angezeigt, mit korrekter Zuordnung der Laufrichtung ;)
Und wenn es um Positionsfahrten geht, entweder Selection Widget oder Switch Widget mit mapping (für wenige ausgewählte Fixpositionen).

So als Randbemerkung: mehr als 4 Positionen (inklusive komplett unten/oben) werden so gut wie nie gebraucht; jedenfalls als Taste in der Oberfläche. Der Hersteller Somfy kommt mit drei Tasten aus: Hoch, Stopp("My"), Runter, wobei die Stopp(My)-Taste, sofern der Laden gerade gestoppt ist zum Anfahren einer vorher gespeicherten "My" Position dient. Somfy kann hier durchaus als Richtgröße genannt werden.
Wie gesagt, ich beziehe mich auf Tasten zum direkten Anfahren, innerhalb einer Rule kann es durchaus sinnvoll sein, Läden z.B. alle paar Minuten sonnengeführt um wenige Prozente zu verfahren, aber das macht man ja nicht über die UI...

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 11. Mai 2019 14:42
von Selter
udo1toni hat geschrieben: 11. Mai 2019 00:16 Also besser, um einfach rauf-stop-runter zu steuern ein Rollershutter Item mit Switch Widget verwenden (dadurch wird automatisch ein Rollershutter Widget angezeigt, mit korrekter Zuordnung der Laufrichtung ;)
Wie müsste ich dann mein Item ändern?

Code: Alles auswählen

Type rollershutter : EG_ku_r_tuer 		"Küche Rollladen - Tür"   	[ stateTopic="shellies/shellyswitch25-XXXX/roller/0", commandTopic="shellies/shellyswitch25-XXXX/roller/0/pos", transformationPattern="MAP:shelly.map" ]

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 11. Mai 2019 14:50
von PeterA
Selter hat geschrieben: 11. Mai 2019 14:42
udo1toni hat geschrieben: 11. Mai 2019 00:16 Also besser, um einfach rauf-stop-runter zu steuern ein Rollershutter Item mit Switch Widget verwenden (dadurch wird automatisch ein Rollershutter Widget angezeigt, mit korrekter Zuordnung der Laufrichtung ;)
Wie müsste ich dann mein Item ändern?

Code: Alles auswählen

Type rollershutter : EG_ku_r_tuer 		"Küche Rollladen - Tür"   	[ stateTopic="shellies/shellyswitch25-XXXX/roller/0", commandTopic="shellies/shellyswitch25-XXXX/roller/0/pos", transformationPattern="MAP:shelly.map" ]
Hallo Seiter,

hier meine Konfiguration:
mqtt.things:

Code: Alles auswählen

Bridge mqtt:broker:XXXXXXX [ host="localhost", secure=false ]


{
    Thing topic XXXXXXX "Rolladen" @ "West" {
    Channels:
        Type rollershutter : Shellyswitch25_XXXXXXX_roller   "Rolladen DG Flur"   [ stateTopic="shellies/shellyswitch25-XXXXXXX/roller/0/pos", commandTopic="shellies/shellyswitch25-XXXXXXX/roller/0/command/pos" ]
        Type        number : Shellyswitch25_XXXXXXX_temp     "Shelly2501temp"     [ stateTopic="shellies/shellyswitch25-XXXXXXX/temperature" ]
        Type        number : Shellyswitch25_XXXXXXX_energy   "Shelly2501energy"   [ stateTopic="shellies/shellyswitch25-XXXXXXX/relay/energy" ]
    }
}
mqtt.items:

Code: Alles auswählen

Rollershutter Shellyswitch25_XXXXXXX_roller "Rolladen DG Flur" {channel="mqtt:topic:XXXXXXX:XXXXXXX:Shellyswitch25_XXXXXXX_roller"}
Number Shellyswitch25_XXXXXXX_temp "Shelly2501temp [%.2f °C]" {channel="mqtt:topic:XXXXXXX:XXXXXXX:Shellyswitch25_XXXXXXX_temp"}
Number Shellyswitch25_XXXXXXX_energy "Shelly2501energy [%.0f W*min]" {channel="mqtt:topic:XXXXXXX:XXXXXXX:Shellyswitch25_XXXXXXX_energy"}
Sitemap:

Code: Alles auswählen

Default item=Shellyswitch25_XXXXXXX_temp icon="temperature"
        Default item=Shellyswitch25_XXXXXXX_kWh icon="energy"
        Switch item=Shellyswitch25_XXXXXXX_roller mappings=[0="open",80="80%",100="close"] 
        Slider item=Shellyswitch25_XXXXXXX_roller
        Selection item=Shellyswitch25_XXXXXXX_roller mappings=["0"="0","20"="20","40"="40","60"="60","80"="80","100"="100"]
Die letzten drei Zeilen sind verschiedene Widgets in der Sitemap machen aber alle das gleiche.

Gruß Peter

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 11. Mai 2019 20:49
von Selter
Peter Aschinger hat geschrieben: 11. Mai 2019 14:50
hier meine Konfiguration:
Hallo Peter,

vielen Dank!

Also ist die transformation (map) nicht nötig, richtig?

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 11. Mai 2019 20:59
von PeterA
Nein, weil der Rolladen (wenn über die Shelly App kalibriert) direkt auf eine Position gefahren wird.

Re: shelly 2 openhab Einbindung per MQTT

Verfasst: 12. Mai 2019 16:52
von hpd96
Hallo,

hier meine Lösung via mqtt1 und shelly-positions-invertierung:

reversed by shelly. Firmware-fehler...

Mqtt reporting 0 when shutter is closed. But the standard defined by KNX is:
100% = closed
0% = open

items/shelly.items:

Code: Alles auswählen

Rollershutter Rollladen_wz_westen "Rollladen westen [%.0f %%]" <rollershutter> {mqtt=">[tux:shellies/shellyswitch-55B74B/roller/0/command:command:*:MAP(shelly-rollladen.map)], <[tux:shellies/shellyswitch-55B74B/roller/0/pos:state:JS(rollershutter.js)]" , autoupdate="false" }
transform/rollershutter.js

Code: Alles auswählen

(function(i) {
// shelly 0% = Closed
// oh2 0% = open

        //The following script converts [0% - 100%] to  [100% - 0%].
    var percent_shelly = parseInt(i, 10);

    var percent_oh = (100.0 - percent_shelly);

    //Return result with one decimal accuracy
        return percent_oh.toFixed(1);
})(input)
So passt das icon für Rollladen in sitemap wunderbar:

Code: Alles auswählen

  Frame label="Roll-Läden WZ"
        {
                Default item=Rollladen_wz_westen
                Default item=Rollladen_wz_osten
        }
In rules:

Rollladen_wz_westen.sendCommand("UP")
publish ( "tux", "shellies/shellyswitch-55B74B/roller/0/command/pos", "85") // ToDo via item