Maverick Grillthermometer in FHEM einbinden

Begonnen von Wuehler, 09 Oktober 2017, 00:35:16

Vorheriges Thema - Nächstes Thema

Wuehler

Hallo FHEM und Grill-Gemeinde,

bisher habe ich es mit der bei mir vorliegenden Ausstattung nicht hinbekommen das Maverick ET732 Grillthermometer in FHEM einzubinden.

  • RFXTRX habe ich nicht  :(
  • Signalduino hat nicht funktioniert   :-\
Nun habe ich endlich ein wenig Zeit und Muße dazu gefunden und möchte meine Einbindung mit euch teilen  :)

Meine Hardware:

  • Arduino Uno
  • Arduino Ethernet-Shield (W5500)
  • RXB6 433 Mhz Empfänger an PIN 8 des Arduino
  • 17,3 cm Kupferdraht als Antenne

Basis für die Idee war der BBQDuino (https://github.com/btodcox/BBQduino), den ich auf das wesentliche reduziert und um FHEM-Features ergänzt habe.

In FHEM benötigt man dazu:

  • dummy Maverick
  • Maverick_online_notify
  • Maverick_offline_watchdog
Im Sketch im Anhang sind die Definitionen von dummy, notify und watchdog enthalten (per list -r).

Darauf aufbauend werde ich mir dann bei long jobs einen telegram-Bot aufsetzen, um auch unterwegs zu erfahren, ob die Temperatur noch im richtigen Bereich ist.

Vielleicht hilft es euch. Dann viel Spaß damit.



PS: Feedback natürlich immer gerne

Papaloewe

#1
Vielen Dank für diese Lösung

Mit dem Signalduino empfange ich auch nur noch Unsinn.
(Das hat einmal auch funktioniert!)

Ich werde diese Lösung mal ausprobieren, sobald ich Zeit dafür finde.
Spätestens zur nächsten Grilsaison.  :) :) :)

Master_Nick

Mahlzeit :-)

Schade eine Einbindung in aCulFW wäre ja mein Traum gewesen ;-D
Was eigenes dafür aufbauen - muss ich mal schauen.

Aber nice work! :-)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

igami

Habe das ganze samt Telegram Benachrichtigung​en mit einem RFX laufen. Kann​ ich bei Gelegenheit Mal vorstellen :)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Wuehler

@nick: aculfw war auch mein Favorit. Dazu haben C-Kenntnisse und Zeit aber nicht ausgereicht.  :-\

@igami: An deinem Telegram_bot bin ich interessiert, man muss ja nicht alles selbst erfinden.  ;D

igami

Hier dann mal meine Umsetzung (alles als Raw definition)

1. das Grillthermometer

defmod ET732 TRX_WEATHER ET732
attr ET732 IODev RFXtrx433E
attr ET732 alias Grill: Temperatur

setstate ET732 2017-10-11 18:13:48 temp-bbq 16
setstate ET732 2017-08-29 13:21:21 temp-food 69


2. ein dummy zum setzen der Werte

defmod grill_controlUnit dummy
attr grill_controlUnit alias Grill: Temperatur Steuereinheit
attr grill_controlUnit devStateIcon auto:time_automatic@green:controlMode%20manual manual:time_manual_mode@red:controlMode%20auto
attr grill_controlUnit icon hm_ccu
attr grill_controlUnit readingList controlMode desired limit-lower limit-upper
attr grill_controlUnit setList controlMode:auto,manual desired:50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100 limit-lower:75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250 limit-upper:75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250
attr grill_controlUnit stateFormat controlMode

setstate grill_controlUnit 2017-10-07 19:12:35 controlMode manual
setstate grill_controlUnit 2017-08-19 07:36:55 desired 88
setstate grill_controlUnit 2016-11-21 19:38:59 desired-temp 50
setstate grill_controlUnit 2017-10-07 11:41:45 limit-lower 110
setstate grill_controlUnit 2017-10-07 11:41:45 limit-upper 120


3. Ein DOIF welches die Benachrichtigung auslöst

defmod grill_automation DOIF ([ET732:temp-food] >= [?grill_controlUnit:desired] and\
[?grill_controlUnit:controlMode] eq "auto"\
)(\
  set Grillthermometer_Dialog say done\
)\
DOELSEIF\
([ET732:temp-bbq] < [?grill_controlUnit:limit-lower] and\
[?grill_controlUnit:controlMode] eq "auto"\
)(\
  set Grillthermometer_Dialog say toLow\
)\
DOELSEIF\
([ET732:temp-bbq] > [?grill_controlUnit:limit-upper] and\
[?grill_controlUnit:controlMode] eq "auto"\
)(\
  set Grillthermometer_Dialog say toHigh\
)\
\
DOELSEIF\
([ET732:temp-bbq] > [?grill_controlUnit:limit-lower] and\
[ET732:temp-bbq] < [?grill_controlUnit:limit-upper] and\
[?grill_controlUnit:controlMode] eq "auto"\
)(\
  set Grillthermometer_Dialog say ok\
)
attr grill_automation alias Grill: Temperatur Automatik
attr grill_automation cmdState done|temp low|temp high|temp ok|manual
attr grill_automation icon time_automatic


4. die Benachrichtigung erfolgt über mein msgDialog Modul welches demnächst offiziell eingecheckt wird. Für alle die sich da einlesen möchten hier der Dialog:

defmod Grillthermometer_Dialog msgDialog {\
  "Grillthermometer": {\
    "message": [\
      "(Grillthermometer) ",\
      "{return('(Benachrichtigung ' . (ReadingsVal('%controlUnit%', 'controlMode', '') eq 'manual' ? 'einschalten' : 'ausschalten') . ') ')}",\
      "(programmieren) ",\
      "(Verlaufsdiagramm) ",\
      "(abbrechen) ",\
      "Grilltemperatur: [%sensor%:temp-bbq] ([%controlUnit%:limit-lower]-[%controlUnit%:limit-upper]) °C",\
      "Kerntemperatur: [%sensor%:temp-food] °C",\
      "Solltemperatur: [%controlUnit%:desired] °C",\
      "{return('Beachrichtigung: ' . (ReadingsVal('%controlUnit%', 'controlMode', '') eq 'auto' ? 'eingeschaltet' : 'ausgeschaltet'))}"\
    ],\
    "Grillthermometer": {\
      "commands": "set $SELF say @$recipient Grillthermometer"\
    },\
    "Benachrichtigung einschalten": {\
      "commands": "set %controlUnit% controlMode auto",\
      "message": [\
        "TelegramBot_MTYPE=queryInline (%me%) ",\
        "Ich werde dich benachrichtigen sobald das Essen fertig ist oder die Grilltemperatur außerhalb des eingestellten Bereich ist."\
      ]\
    },\
    "Benachrichtigung ausschalten": {\
      "commands": "set %controlUnit% controlMode manual",\
      "message": [\
        "TelegramBot_MTYPE=queryInline (%me%) ",\
        "Ich werde dich nicht mehr benachrichtigen."\
      ]\
    },\
    "programmieren": {\
      "message": [\
        "(bestätigen) ",\
        "(zurück|abbrechen) ",\
        "Bei welcher Kerntemperatur ist das Essen fertig?",\
        "Bitte eine Temperatur im Bereich 50-100 °C angeben.",\
        "Aktuell ist [%controlUnit%:desired] °C eingestellt."\
      ],\
      "Kerntemperatur": {\
        "match": "([5-9][0-9]|100)",\
        "commands": [\
          "set %controlUnit% desired $message",\
          "set $SELF say @$recipient Grillthermometer|programmieren|bestätigen"\
        ]\
      },\
      "bestätigen": {\
        "message": [\
          "(bestätigen) ",\
          "(zurück|abbrechen) ",\
          "Es wurde eine Solltemperatur von [%controlUnit%:desired] °C eingestellt.",\
          "",\
          "In welchem Bereich darf die Grilltemperatur schwanken?",\
          "Bitte einen Bereich in Mindestemperatur-Höchsttemperatur angeben.",\
          "Aktuell ist [%controlUnit%:limit-lower]-[%controlUnit%:limit-upper] °C eingestellt."\
        ],\
        "Grilltemperatur": {\
          "match": "\\d{1,3}-\\d{1,3}",\
          "commands": [\
            "{'$message' =~ m/(\\d{1,3})-(\\d{1,3})/;; fhem(\"set %controlUnit% limit-lower $1;;;; set %controlUnit% limit-upper $2;;;;\")}",\
            "set $SELF say @$recipient Grillthermometer|programmieren|bestätigen|bestätigen"\
          ]\
        },\
        "bestätigen": {\
          "commands": "set %controlUnit% controlMode auto",\
          "message": [\
            "TelegramBot_MTYPE=queryInline (%me%) ",\
            "Für die Grilltemperatur wurde ein Bereich von [%controlUnit%:limit-lower]-[%controlUnit%:limit-upper] °C eingestellt.",\
            "",\
            "Ich werde dich benachrichtigen sobald das Essen fertig ist oder die Grilltemperatur außerhalb des eingestellten Bereich ist."\
          ]\
        }\
      }\
    },\
    "Verlaufsdiagramm": {\
      "commands": "set %TelegramBot% cmdSend {plotAsPng('%plot%')}",\
      "message": [\
        "TelegramBot_MTYPE=queryInline (%me%) ",\
        "Grilltemperatur: [%sensor%:temp-bbq] ([%controlUnit%:limit-lower]-[%controlUnit%:limit-upper]) °C",\
        "Kerntemperatur: [%sensor%:temp-food] °C",\
        "Solltemperatur: [%controlUnit%:desired] °C"\
      ]\
    }\
  },\
  "toLow": {\
    "setOnly": true,\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Die Grilltemperatur ist zu niedrig.",\
      "Sie beträgt aktuell [%sensor%:temp-bbq] °C und soll im Bereich [%controlUnit%:limit-lower]-[%controlUnit%:limit-upper] °C liegen."\
    ]\
  },\
  "toHigh": {\
    "setOnly": true,\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Die Grilltemperatur ist zu hoch.",\
      "Sie beträgt aktuell [%sensor%:temp-bbq] °C und soll im Bereich [%controlUnit%:limit-lower]-[%controlUnit%:limit-upper] °C liegen."\
    ]\
  },\
  "ok": {\
    "setOnly": true,\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Die Grilltemperatur ist in Ordnung.",\
      "Sie beträgt aktuell [%sensor%:temp-bbq] °C und soll im Bereich [%controlUnit%:limit-lower]-[%controlUnit%:limit-upper] °C liegen."\
    ]\
  },\
  "done": {\
    "setOnly": true,\
    "commands": "set %controlUnit% controlMode manual",\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Das Essen ist fertig."\
    ]\
  }\
}
attr Grillthermometer_Dialog allowed igami
attr Grillthermometer_Dialog evalSpecials controlUnit=grill_controlUnit\
sensor=ET732\
plot=grill_SVG


Ist alles noch nicht perfekt, aber funktioniert bisher ganz gut. Schön wäre noch, wenn nur die Person Benachrichtig wird, welche die Benachrichtigung auch eingeschaltet hat.

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Wuehler

Danke igami,

ich hatte gehofft schneller dazu zu kommen deinen Dialog einzubauen. Daher jetzt erstmal nur ein Danke

Wuehler

@igami: habe msg und deinen Dialog vorm letzten PP aufgesetzt. Hat soweit zunächst auch funktioniert. In den Dialogen steckt einiges an Potential. Danke dafür. Werde mein bisheriges Telegram-notify mal dadurch erstezen.
Leider hat die Kombi mit meinem Arduino dazu geführt, dass fhem irgendwann eingefroren ist. Muss ich mal weiter analysieren. Liegt aber vermutlich eher nicht an msg. Wenn es doch msg ist schreibe ich dazu im entsprechenden Modul-Thread. Ansonsten gibt es hier ein Update.

Ralf9

#8
Zitat von: Papaloewe am 09 Oktober 2017, 20:25:25
Mit dem Signalduino empfange ich auch nur noch Unsinn.
(Das hat einmal auch funktioniert!)

Mich würde interessieren ob es mit meiner Firmware V 3.3.2-dev funktioniert.
https://forum.fhem.de/index.php/topic,82379.msg766909.html#msg766909

Da es hier etwas offtopic ist, bitte im anderen Thema antworten.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Papaloewe

Ok, kann ich jetzt am Wochenende testen.
Berichte dann im anderen Thread.

Vielen Dank und gute Nacht.

Wuehler

Funktioniert mit SDuino und SD_WS_Maverick  :)
siehe Link von Ralf

Tommy82

Hi,
da mich das Thema auch interessiert, funktioniert das auch mit einem 433MHz Cul welchen ich normalerweise für intertechnos verwende?
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Wuehler

#12
Hi Tommy,

Das sollte mit Signalduino funktionieren. Siehe hier:
https://forum.fhem.de/index.php/topic,49548.0.html

Ist bei mir betzt schon länger her, hatte mir nen signalduino dafür zusammengesteckt. Mache ich dann bei longjobs immer schnell vorher.

Viel Erfolg, Dirk

Edit: auf Signalduino korrigiert