Autor Thema: Folgende Frage zu Sonoff/Tasmota und MQTT2_Device  (Gelesen 15561 mal)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9240
  • eigentlich eher "user" wie "developer"
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #180 am: 18 Januar 2019, 09:34:01 »
@tpm88
Danke für's recherchieren. Dann lasse ich das erst mal so, wie es jetzt ist. (@Rudi: die generellere ist vermutlich in den ersten Fassungen im svn zu finden, das könnte man durchaus wieder vorholen, denn ich mir nicht sicher, ob es nicht Sinn machen würde, das etwas weiter zu fassen, als es derzeit ist. Andererseits: Wer intensiver in der MQTT-Welt unterwegs ist und daher die Vorgaben ändert, wird auch kaum größere Probleme haben, die templates als Vorlagen zu nutzen.)

@Rudi
Dafür sollten sie aber durchlaufen, selbst wenn die Regex zu keinem match führt. War jedenfalls aber bei dem Testszenario hier nicht der Fall:
Korrekt, aber wenn irgendwas schief läuft, also ein Parameter - aus welchen Gründen auch immer - nicht automatisch bestimmt werden kann, kommt ein Dialogfeld. In das kann man zwar was eintragen, aber ganz egal, was man da eingibt, es hat keine Auswirkungen.

Beispiel: Man manipuliere die readingList eines tasmota, z.B. so (tulu statt tele):

defmod tasmota_test3 MQTT2_DEVICE DVES_9B01BD
attr tasmota_test3 IODev MQTT2_FHEM_Server
attr tasmota_test3 readingList DVES_9B01BD:tulu/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }\
DVES_9B01BD:tulu/sonoffkitchen/INFO:.* { json2nameValue($EVENT) }
attr tasmota_test3 room MQTT2_DEVICE
und versuche dann, darauf eines der Tasmota-templates anzuwenden.
Ergebnis: Es passiert nichts, selbst wenn man da "das richtige" (sonoffkitchen) oder irgendwas anderes einträgt.
Das sollte man m.E. fixen, oder habe ich was in der Handhabung nicht richtig verstanden?
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 21646
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #181 am: 18 Januar 2019, 11:00:55 »
Zitat
Das sollte man m.E. fixen, oder habe ich was in der Handhabung nicht richtig verstanden?
Ich sehe kein Problem: wenn ich das ausprobiere, bekomme ich nach Anwenden des attrTemplates ein haufen "BLA", siehe Anhaenge, mit Vorher, Dialog, Nachher.
Falls das bei Dir anders ausschaut, dann bitte ich um Screenshots, oder genauere Beschreibung der Vorgaenge.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9240
  • eigentlich eher "user" wie "developer"
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #182 am: 18 Januar 2019, 12:28:12 »
Ahhhh, tatsächlich ein Anwenderproblem :( .

Dass man _nur_ die Variable ersetzten soll, hat sich mir nicht direkt erschlossen; ich hatte immer den ganzen Text mit dem Variableninhalt ersetzt und mich gewundert, wieso man das alles vorneweg angezeigt bekommt.

Thx, vielleicht sollte ich den Hinweis, wie es gemeint ist, im Wiki ergänzen, das machen dann bestimmt bei Gelegenheit auch andere nicht as designed... (das mit der cref ist auch nicht vergessen und kommt irgendwann noch).
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline IngoF

  • New Member
  • *
  • Beiträge: 13
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #183 am: 18 Januar 2019, 18:16:26 »
Hmmm,

bei intensiverem Nachdenken scheint es so zu sein, dass sich Homekit da direkt state greift und nicht irgendwas, was danach passiert. Als Spielmaterial kommt m.E. noch ein userReadings in Frage:
attr DEVICE userReadings state:POWER1:.* { lc(ReadingsVal($name,"POWER1","")) }
(lc ist vermutlich nicht mehr erforderlich; insgesamt gefällt mir das gar nicht im template, userReadings sollte man m.E. wirklich vollständig in User-Hand lassen)
Damit funktionierts. Das kommt dann auch so an der Homebrige an. So sieht das dann im Log aus:

  2019-01-18 17:50:19 caching: SonoffBasic-state: on
[1/18/2019, 5:50:19 PM] [FHEM]     caching: On: true (as boolean; from 'on')
  2019-01-18 17:50:20 caching: SonoffBasic-state: off
[1/18/2019, 5:50:20 PM] [FHEM]     caching: On: false (as boolean; from 'off')

Ohne userReadings und mit "setStateList on off"sieht das so aus:
 2019-01-18 17:55:24 caching: SonoffBasic-state: set_on
 2019-01-18 17:55:25 caching: SonoffBasic-state: set_off

Sollte sich aber nicht eigentlich das reading "state" von "set_on" nach "on" wechseln wenn der Sonoff Vollzug gemeldet hat? Oder hab ich das fasch verstanden? Über das Attribut
attr SonoffBasic stateFormat POWER1wird das ja zurückgemeldet und auch im FHEM angezeigt.
« Letzte Änderung: 18 Januar 2019, 23:45:12 von IngoF »
Zotac Zbox Ci321  mit Docker| CUL 868MHz CUL 433 MHz Selbsbau |
3 x FHT80b | 3 x IT | Zigbee | KS300  | Signalduino | LaCrosse | Sonoff

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9240
  • eigentlich eher "user" wie "developer"
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #184 am: 19 Januar 2019, 14:36:07 »
Schön, dass das jetzt geklappt hat.

Dass state nicht verändert wird, ist keine Überraschung, das geht im Prinzip nur, wenn das Modul das direkt macht.
Das bringt mich aber zu folgender Überlegung: Hier könnte man evtl. auch bei der JSON-Extraktion irgendwie mit jsonMap eingreifen, und dann POWER1 in state (oder noch besser state:POWER1) umleiten. Müßtest du ggf. mal ausprobieren, ich fände das eleganter als das userReadings-Dingens, das sollte m.E. wirklich in Userhand verbleiben...

Wenn das nämlich klappt, wäre es eine generische Lösung, die ggf. mit kleinen Anpassungen für alle Tasmotas paßt, auch die mehrkanaligen. (Denke ich zumindest).
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline IngoF

  • New Member
  • *
  • Beiträge: 13
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #185 am: 23 Januar 2019, 20:31:22 »
Ich hab das jetzt folgendermaßen gelöst. Ich habe einfach in die readingList
Zitat
stat/sonofftest/POWER1:.* state
eingefügt und stateFomat gelöscht. setStateList muss drin bleiben um die Rückmeldung zu bekommen, ob der Sonoff schaltet.
Damit funktioniert auch die Aktualisierung über die Homebridge, egal wo geschaltet wird.

Gruß, Ingo
Zotac Zbox Ci321  mit Docker| CUL 868MHz CUL 433 MHz Selbsbau |
3 x FHT80b | 3 x IT | Zigbee | KS300  | Signalduino | LaCrosse | Sonoff

Offline moonsorrox

  • Hero Member
  • *****
  • Beiträge: 3454
  • Online
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #186 am: 05 März 2019, 18:42:29 »
Ich habe jetzt nochmal eine Frage zu einem Sonoff Touch mit 3 Kanälen, welches Template kann ich dafür nutzen
Das Modul heißt unter Tasmota Einstellungen "Sonoff T1 3CH Modul" (30)

Den 2-Kanal Touch hatte ich mit dem template "A_02_tasmota_2channel_split" angelegt

Da es für den 3-Kanal kein template gibt habe ich die 3 Kanäle mal von Hand angelegt, aber irgendwie bekomme ich den nicht zum schalten mit Fhem.
Finde den Fehler nicht..!!
Wenn ich den Schalter von Hand schalte sehe ich auch wie die Readings sich ändern nur aus Fhem heraus geht es nicht.

Die Kanäle heißen:
BU_3Kanal_Sonoff_Touch
BU_3Kanal_Sonoff_Touch_CH2
BU_3Kanal_Sonoff_Touch_CH3

hier mal ein list von einem 1.Kanal:
Internals:
   CFGFN      ./FHEM/Obergeschoss.cfg
   CID        DVES_DC78C3
   DEF        DVES_DC78C3
   DEVICETOPIC BU_3Kanal_Sonoff_Touch
   FUUID      5c7e9978-f33f-a6c6-b55e-571eb6f28757159c
   IODevMissing 1
   IODevName  m2server
   LASTInputDev m2server
   MSGCNT     83
   NAME       BU_3Kanal_Sonoff_Touch
   NR         2777
   STATE      off
   TYPE       MQTT2_DEVICE
   m2server_MSGCNT 83
   m2server_TIME 2019-03-05 18:34:53
   OLDREADINGS:
   READINGS:
     2019-03-05 18:19:44   FallbackTopic   cmnd/DVES_DC78C3_fb/
     2019-03-05 18:19:44   GroupTopic      sonoffs
     2019-03-05 18:19:45   Hostname        3Kanal_Sonoff_Touch-6339
     2019-03-05 18:19:45   IPAddress       10.0.0.157
     2019-03-05 18:19:44   LWT             Online
     2019-03-05 18:34:53   LoadAvg         19
     2019-03-05 18:19:44   Module          Sonoff T1 3CH
     2019-03-05 18:34:53   POWER1          off
     2019-03-05 18:34:53   POWER2          off
     2019-03-05 18:34:53   POWER3          off
     2019-03-05 18:19:45   RestartReason   Software/System restart
     2019-03-05 18:18:33   SaveData        on
     2019-03-05 18:18:33   SetOption26     on
     2019-03-05 18:34:53   Sleep           50
     2019-03-05 18:34:53   SleepMode       Dynamic
     2019-03-05 18:18:32   StateText1      off
     2019-03-05 18:18:32   StateText2      on
     2019-03-05 18:18:33   StateText3      toggle
     2019-03-05 18:18:33   StateText4      hold
     2019-03-05 18:34:53   Time            2019-03-05T18:34:48
     2019-03-05 18:34:53   Uptime          0T00:15:14
     2019-03-05 18:34:53   Vcc             3.499
     2019-03-05 18:19:44   Version         6.4.1(sonoff)
     2019-03-05 18:19:45   WebServerMode   Admin
     2019-03-05 18:34:53   Wifi_AP         2
     2019-03-05 18:34:53   Wifi_BSSId      9C:C7:A6:08:43:67
     2019-03-05 18:34:53   Wifi_Channel    8
     2019-03-05 18:34:53   Wifi_RSSI       100
     2019-03-05 18:34:53   Wifi_SSId       xxxxxxxxxxxxxxxxxxxxxxxxxxx
     2019-03-05 18:25:24   state           off
Attributes:
   IODev      m2server
   alias      Touch - 1 -
   autocreate 0
   comment    Channel 1 for BU_3Kanal_Sonoff_Touch
   devStateIcon Ein:led_stripe_on@crimson:Aus Aus:light_led_stripe@lightgreen:Ein
   group      Licht Büro
   icon       taster@#F0E68C
   readingList tele/3Kanal_Sonoff_Touch/LWT:.* LWT
  tele/3Kanal_Sonoff_Touch/STATE:.* { json2nameValue($EVENT) }
  tele/3Kanal_Sonoff_Touch/SENSOR:.* { json2nameValue($EVENT) }
  tele/3Kanal_Sonoff_Touch/INFO.:.* { json2nameValue($EVENT) }
  tele/3Kanal_Sonoff_Touch/INFO1.:.* { json2nameValue($EVENT) }
  tele/3Kanal_Sonoff_Touch/INFO2.:.* { json2nameValue($EVENT) }
  tele/3Kanal_Sonoff_Touch/INFO3.:.* { json2nameValue($EVENT) }
  stat/3Kanal_Sonoff_Touch/RESULT:.* { json2nameValue($EVENT) }
   room       MQTT,OG - Flur
   setList    off:noArg    cmnd/3Kanal_Sonoff_Touch/POWER1 0
  on:noArg     cmnd/3Kanal_Sonoff_Touch/POWER1 1
  toggle:noArg cmnd/3Kanal_Sonoff_Touch/POWER1 2
   sortby     02
   stateFormat {lc ReadingsVal("$name","POWER1","")}
« Letzte Änderung: 05 März 2019, 18:45:19 von moonsorrox »
Intel-NUC i3: FHEM-Server 5.9 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9240
  • eigentlich eher "user" wie "developer"
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #187 am: 05 März 2019, 19:25:11 »
Werden die POWERn-Kanäle nicht hochgezählt? Müßte hier dann "3" sein.
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline moonsorrox

  • Hero Member
  • *****
  • Beiträge: 3454
  • Online
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #188 am: 05 März 2019, 23:00:28 »
ja das ist schon klar, ich habe hier auch nur einen Kanal angehangen...
Die setlist der 3 Kanäle sieht so aus:
Kanal 1
attr BU_3Kanal_Sonoff_Touch
off:noArg    cmnd/3Kanal_Sonoff_Touch/POWER1 0
  on:noArg     cmnd/3Kanal_Sonoff_Touch/POWER1 1
  toggle:noArg cmnd/3Kanal_Sonoff_Touch/POWER1 2
Kanal 2
attr BU_3Kanal_Sonoff_Touch_CH2
off:noArg    cmnd/3Kanal_Sonoff_Touch/POWER2 0\
  on:noArg     cmnd/3Kanal_Sonoff_Touch/POWER2 1\
  toggle:noArg cmnd/3Kanal_Sonoff_Touch/POWER2 2
Kanal 3
attr BU_3Kanal_Sonoff_Touch_CH3
off:noArg    cmnd/3Kanal_Sonoff_Touch/POWER3 0
  on:noArg     cmnd/3Kanal_Sonoff_Touch/POWER3 1
  toggle:noArg cmnd/3Kanal_Sonoff_Touch/POWER3 2

stateFormat, jeweils
{lc ReadingsVal("$name","POWER1","")}
{lc ReadingsVal("$name","POWER2","")}
{lc ReadingsVal("$name","POWER3","")}

anders habe ich das bei meinen Tasmota ob nun der Dual oder auch der 4-Kanalschalter, nie gemacht.
Selbst den 2Kanal Touch habe ich im Einsatz und den konnte ich über template ja erstellen, aber irgendwie mag der 3 Kanal mich wohl nicht...

Weiß da grad nicht weiter was ich noch machen soll  :-\
Intel-NUC i3: FHEM-Server 5.9 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 1783
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #189 am: 06 März 2019, 01:09:12 »
Zitat
attr BU_3Kanal_Sonoff_Touch_CH2 
off:noArg    cmnd/3Kanal_Sonoff_Touch/POWER2 0\
  on:noArg     cmnd/3Kanal_Sonoff_Touch/POWER2 1\
  toggle:noArg cmnd/3Kanal_Sonoff_Touch/POWER2 2

Sind die Beispiele aus der Raw-Definition oder aus einem List kopiert ?

Aus einem List würd ich sagen Kanal 1 und 3 sollten schalten.
Aus der Raw-Defintion dürfte nur Kanal 2 schalten.

Offline moonsorrox

  • Hero Member
  • *****
  • Beiträge: 3454
  • Online
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #190 am: 06 März 2019, 10:26:44 »
Sind alle aus dem RAW... ist wohl von meinen unzähligen Versuchen ein Überbleibsel  :-\
Aber schalten tut keiner der drei...!
Werde nachher nochmal mit frischer Kraft ran gehen und schauen ob ich etwas übersehen habe
Intel-NUC i3: FHEM-Server 5.9 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Offline moonsorrox

  • Hero Member
  • *****
  • Beiträge: 3454
  • Online
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #191 am: 06 März 2019, 12:26:16 »
ich habe jetzt nochmal alle 3 setlist über das Attribut setlist neu erstellt und nun funktioniert es auch.
Ich habe mal geschaut die "\" sind jetzt in allen 3 setlist drin, aber auch vorher war es ja bei der 2. setlist drin und funktionierte auch nicht.
Keine Ahnung warum es nun geht....! war wohl zu spät gestern  :D ;)

@Beta-User evtl. sollte noch ein template für 3 kanalige Geräte erstellt werden, ich habe sie jetzt alle händisch angelegt, da kein template existiert. Ich weiß nicht ob es noch mehr 3 kanalige Geräte gibt..!!
Intel-NUC i3: FHEM-Server 5.9 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9240
  • eigentlich eher "user" wie "developer"
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #192 am: 06 März 2019, 12:42:32 »
Hmm, es wäre vermutlich zielführender, ein 4-chanel-split tamplate aufzunehmen.

Da wird dann zwar ein Kanal zu viel erstellt, aber den kann man dann einfach löschen. Die templates können m.E. sowieso nicht jeden Sonderfall abdecken (vielleicht fällt mir was ein, um da erst mal bestimmte Teile zu verstecken, die man nur in bestimmten Fällen benötigt...).

Magst du das zuliefern?

Übrigens: das lc-stateFormat dürfte nicht mehr erforderlich sein, wenn der tasmota umgestellt wurde auf "sende in Kleinschriebung" (was das template intern macht).
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline moonsorrox

  • Hero Member
  • *****
  • Beiträge: 3454
  • Online
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #193 am: 06 März 2019, 15:38:37 »
Leider war meine Freude nur kurz, jetzt funktioniert es über die Fhem Tasten nicht mehr, keine Ahnung warum. :-\ :-\
Nach einem Neustart von Fhem geht es wieder

Wenn ich den Touch selber betätige schaltet es und wenn ich den über die Tasmota Weboberfläche (IP) schalte funktioniert es auch, dass devStateIcon ändert sich auch und das Reading POWER1, POWER2 und POWER3 ändert sich auch.
Werde mal weiter schauen warum es nun nicht mehr funktioniert...!  :-\

Das mit der Kleinschreibung habe ich gesehen die Readings sind immer "on" oder "off"

Ja natürlich könnte man ein 4-Kanal Split auch nehmen, dass wäre mir persönlich egal, da es glaube ich weiter keine 3-kanaligen Geräte gibt
« Letzte Änderung: 06 März 2019, 16:08:58 von moonsorrox »
Intel-NUC i3: FHEM-Server 5.9 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Offline Invers

  • Hero Member
  • *****
  • Beiträge: 1859
Antw:Folgende Frage zu Sonoff/Tasmota und MQTT2_Device
« Antwort #194 am: 06 März 2019, 19:12:52 »
Ich will gerade ein Template A_01_tasmota_basic nutzen, um eine Steckdose s20 zu installieren.
Das wurde mir hier mal so gesagt.
Das Template lässt sich aber nicht zuweisen. Es ist in der Liste enthalten (da steht immer noch, dass man für s20 das Template _01a_tasmota_basic_state_power1 genutzt werden soll), lässt sich aber nicht zuweisen, sondern Statt dessen erscheint dann kommentarlos bei Model das Template A_01a_tasmota_basic_state_power1.
Was kann ich da tun? Bin ich hier nicht auf dem neuesten Wissensstand?

Bin dankbar für einen Rat.
Pi3B Stretch | F.-Box 7490 | CUL 433 | CUL 868 | SDuino + Siro Rollos | HM-LAN | 12 x Dect200 | 5 x TX3TH | 3 x Heizung FHT + Fensterkont. | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkontakt TFK-TI | HM-Bew.-Melder aussen + innen | 3 x Smokedet. HM-SEC-SD-2 | SAT Gigablue quad+ |

 

decade-submarginal