Natural Language User Interface 95_Babble.pm

Begonnen von Prof. Dr. Peter Henning, 28 Dezember 2017, 17:37:03

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Sorry, ich dachte eigentlich, dass ich den herausgenommen hätte...

Version 1.09 wird soeben eingecheckt, die vermeidet diesen Fehler. Allerdings kennt sie noch nicht die Chatbot-Funktionalität - die ist nur in dem oben angehängten File zu finden (habe ich ebenfalls gleich upgedatet).

LG

pah


ekur

Ist die Chatbot Variante jetzt in der eingecheckten 1.09er Version? Bei mir wird in dem Post auf Seite 6 keine Datei mehr zum Download angezeigt.
FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC

Prof. Dr. Peter Henning

Die Version im SVN ist 1.1, und, ja, das ist das Ding mit ChatBot. Die entsprechenden Rive-Script Dateien gibt es im Ordner contrib/Babble oder im ersten Post des Threads

LG

pah

ekur

Danke für die Info. Bei mir wurde gestern Abend noch die 1.09 als aktuelle Version angezeigt.
FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC

geiercasi

Hi René,

Zitat von: refi am 10 Januar 2018, 20:41:03
AMAD/Automagic → Spracheingabe via Widget → DOIF ruft Babble_DoIt auf → Babble führt Befehl aus
magst du dein define Dazu posten bitte ?

Gruß

refi

Hallo,

so sieht mein DOIF aus:
(["AMADBridge:receiveVoiceCommand"]) ({Babble_DoIt("Babble",(ReadingsVal("AMADBridge","receiveVoiceCommand","")))})
Gruß René
Raspberry Pi3: Duofern, Z-Wave, EnOcean

ekur

Ich habe jetzt mit dem Modul gespielt und bin sehr begeistert, einfache Bedienung, gute Dokumentation, chatbot integriert mit einfacher Sprache. Fast alles perfekt.
Ich habe nur Probleme das die Befehle für die Geräte nicht gesichert werden können. Bei mir wird eine Datei babbleFILE (ohne Endung) direkt in /opt/fhem angelegt, diese wird aber beim sichern (in Babble Device oder im hidden room) nicht gefüllt.
Ein Rechteproblem schliesse ich mal aus, da ich die Datei probeweiser mit voller Berechtigung für alle modifiziert habe.
Meine Frage: Ist die Datei dort an der richtigen Stelle? hat Sie den richtigen Namen?

Viele Grüße

Elmar Kurth
FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC

Prof. Dr. Peter Henning

Ist sie. Kann es sein, dass das Reading lockstate den Wert "locked" hat ? Was sagt das Log ?

LG

pah

ekur

#98
Hallo,

ich habe es jetzt wie folgt getestet, Device auf locked gesetzt, versucht zu speichern:

Ausgabe EventMonitor:
2018-02-18 09:57:00.398 Babble Babble savedate: Sun Feb 18 09:57:00 2018
Ausgabe Logfile:
2018.02.18 09:57:00.400 1: [Babble] attempt to save data failed due to lockstate

Babble unlocked, dann gespeichert

Ausgabe EventMonitor:
2018-02-18 09:57:48.835 Babble Babble savedate: Sun Feb 18 09:57:48 2018
2018-02-18 09:57:48.847 Babble Babble savedate: Sun Feb 18 09:57:48 2018
2018-02-18 09:57:48.977 Babble Babble savedate: Sun Feb 18 09:57:48 2018
2018-02-18 09:57:48.984 Babble Babble savedate: Sun Feb 18 09:57:48 2018
2018-02-18 09:57:57.774 Babble Babble savedate: Sun Feb 18 09:57:57 2018

Warum versucht er fünfmal zu speichern?
EDIT: Beim Sichern über den Raum "Babble" (Click auf "Sichern") erfolgt der vierfache Eintrag in den Eventmonitor, Bei "set Babble save" ein Eintrag in den Eventmonitor.

Keine Ausgabe im Logfile, in der Datei babbleFILE ist ebenfalls nichts enthalten

Berechtigungen File in /opt/fhem
-rwxrwxrwx  1 fhem dialout      1 Feb 18 09:54 babbleFILE

In
list Babble
steht

     command:
       heizlüfter:
         keller:
           schalten:
             aus        set Keller_Zusatzheizung 0
             ein        set Keller_Zusatzheizung 1

   READINGS:
     2018-02-18 09:57:39   lockstate       unlocked
     2018-02-18 09:57:57   savedate        Sun Feb 18 09:57:57 2018
     2018-02-16 20:56:14   state           Initialized


Kann ich eine Musterdatei für babbleFiLE bekommen? Ich würde dann mal auf Dateiebene diese erstellen und sehen was dann passiert.
FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC

Prof. Dr. Peter Henning

#99
Mehrfaches Save ? Habe ich nicht im Event-Monitor.

Immer noch leer ? Was ergibt denn der Eintrag in die Kommandozeile
{FileWrite("babbleFILE","abcdefghijklmnopqrstuvwxyz")}

Manuelles babbleFILE: Davon rate ich dringend ab !

Auf eigene Gefahr - funktioniert wegen des "*" in dem Namen der Postme-Listen auch nicht uneingeschränkt (eine neue Version von Babble, die auch kompliziertere Devicenamen mit regulären Ausdrücken akzeptiert, ist in Arbeit).

{
    "verbsicc": [
        [
            "schalt",
            "schalte"
        ],
        [
            "sage",
            "sage",
            "mache"
        ],
        [
            "mach",
            "machs",
            "mache"
        ],
        [
            "öffne",
            "schlieÃ\u009f"
        ],
        [
            "schlieÃ\u009fe",
            "schlieÃ\u009f"
        ],
        [
            "stell",
            "stelle"
        ],
        [
            "weck",
            "wecke"
        ],
        [
            "sichere",
            "sicher"
        ],
        ["schütze"],
        ["wache"],
        ["korrigiere"],
        ["füge"],
        ["lösche"],
        ["sende"],
        ["entferne"]
    ],
    "devsalias": {
        "licht": [
            "8",
            "9"
        ],
        "zirkulation": ["2"],
        "wecker": ["1"],
        "gong": ["0"],
        "golf": ["3"],
        "temperatur": ["6"],
        "feuchte": ["5"],
        "wetter": ["7"],
        "zeit": ["10"],
        "*liste": ["12"],
        "haus": [
            "4",
            "11"
        ]
    },
    "verbs": {
        "schlieÃ\u009f": "schlieÃ\u009fen",
        "sagen": "sagen",
        "wachen": "wachen",
        "sicher": "sichern",
        "schütze": "schützen",
        "entfernen": "entfernen",
        "schalte": "schalten",
        "lösche": "löschen",
        "stelle": "stellen",
        "senden": "senden",
        "schuetzen": "schuetzen",
        "stellen": "stellen",
        "überwachen": "überwachen",
        "wecken": "wecken",
        "sende": "senden",
        "entsichere": "entsichern",
        "überwache": "überwachen",
        "stell": "stellen",
        "schlieÃ\u009fen": "schlieÃ\u009fen",
        "machs": "machen",
        "schalten": "schalten",
        "sichern": "sichern",
        "öffne": "öffnen",
        "korrigieren": "korrigieren",
        "löschen": "löschen",
        "korrigiere": "korrigieren",
        "schalt": "schalten",
        "wecke": "wecken",
        "mache": "machen",
        "entferne": "entfernen",
        "schuetze": "schuetzen",
        "sichere": "sichern",
        "entsichern": "entsichern",
        "sage": "sagen",
        "weck": "wecken",
        "wache": "wachen",
        "schlieÃ\u009fe": "schlieÃ\u009fen",
        "schützen": "schützen",
        "öffnen": "öffnen",
        "fügen": "fügen",
        "füge": "fügen",
        "mach": "machen",
        "machen": "machen"
    },
    "re_places": "((garderobe)|(gästebad)|(wohnzimmer)|(essgruppe)|(sitzgruppe)|(fernsehen)|(schlummern)|(auÃ\u009fen)|(hofeingang)|(terrasse)|(rasen)|(garage)|(vorgarten)|(hecke)|(baum)|(eingang)|(vorratskeller)|(zwischenkeller)|(kellerbad)|(werkstattkeller)|(heizungskeller)|(schlafzimmer)|(badezimmer)|(flur)|(bibliothek)|(gästezimmer)|(arbeitszimmer)|(dominiks_zimmer))",
    "devcontacts": {
        "wecker": [
            "Wecker",
            "Alexa.Weckzeit",
            0
        ],
        "gong": [
            "Gong",
            "Alexa.Dominic_Wecken",
            0
        ],
        "golf": [
            "Golf",
            "Golf.message",
            0
        ],
        "licht": [
            "Licht",
            "WZ.Scene",
            "1"
        ],
        "zirkulation": [
            "Zirkulation",
            "Alexa.Zirkulation",
            0
        ],
        "zeit": [
            "Zeit",
            "YYY",
            "1"
        ],
        "wetter": [
            "Wetter",
            "weather.Today",
            0
        ],
        "licht_1": [
            "Licht_1",
            "A.Scene",
            "1"
        ],
        "haus_1": [
            "Haus_1",
            "houseProfileC",
            0
        ],
        "*liste": [
            "*Liste",
            "PostIt",
            "2"
        ],
        "haus": [
            "Haus",
            "YYY",
            "1"
        ],
        "temperatur": [
            "Temperatur",
            "tempProfileC",
            0
        ],
        "feuchte": [
            "Feuchte",
            "humProfileC",
            0
        ]
    },
    "re_verbparts": "((zu)|(auf)|(ent)|(wider)|(ein)|(an)|(aus)|(ab)|(um)|(ver)|(be)|(über)|(hinzu))",
    "re_status": "((status)|(wert)|(wetter)|(zeit))",
    "re_verbsi": "(?P<verbsi>(schalten)|(sagen)|(machen)|(öffnen)|(schlieÃ\u009fen)|(stellen)|(wecken)|(sichern)|(schützen)|(wachen)|(korrigieren)|(fügen)|(löschen)|(senden)|(entfernen))",
    "re_quests": "((wie)|(wo)|(wann)|(welche)|(welches)|(welcher))",
    "help": {
        "zirkulation": "Bitte sprich: Zirkulation anschalten, um die Warmwasserzirkulation für zehn Minuten zu starten",
        "licht": "Bitte sprich: Licht, gefolgt von einer Ortsangabe, gefolgt von an oder aus",
        ".*liste": "Sprich: Listenname, gefolgt von ",
        "gong": "Bitte sprich: Gong anschalten, und Dominic wird geweckt",
        "golf": "Bitte sprich: Golf, und ich sage den Status des Golfplatzes Bruchsal",
        "peters_liste": "Sprich: Zu oder von Peters_Liste, gefolgt von hinzufügen oder entfernen, gefolgt von einer Bezeichnung, oder Peters Liste ansagen oder senden",
        "wecker": "Bitte sprich: Wecken, gefolgt von einer Uhrzeit, oder Wecker ausschalten",
        "feuchte": "Bitte sprich: Wie ist die Feuchte, gefolgt von einer Ortsangabe",
        "temperatur": "Bitte sprich: Wie ist die Temperatur, gefolgt von einer Ortsangabe",
        "haus": "Bitte sprich: Haus, gefolgt von sichern, entsichern, schützen oder überwachen",
        "*liste": "Bitte sprich: Listenname, gefolgt von ansagen, löschen oder hinzufügen, entfernen und einer Bezeichnung",
        "wetter": "Bitte sprich: Wetter, gefolgt von heute, morgen oder übermorgen",
        "haus_1": "Bitte sprich: Haus, gefolgt von einer Ortsangabe, gefolgt von ",
        "licht_1": "Bitte sprich: Licht, gefolgt von einer Ortsangabe, gefolgt von an oder aus",
        "zeit": "Bitte sprich: Guten Morgen oder Gute Nacht oder frage nach dem Status von Zeit"
    },
    "places": [
        "Garderobe",
        "Gästebad",
        "Wohnzimmer",
        "Essgruppe",
        "Sitzgruppe",
        "Fernsehen",
        "Schlummern",
        "AuÃ\u009fen",
        "Hofeingang",
        "Terrasse",
        "Rasen",
        "Garage",
        "Vorgarten",
        "Hecke",
        "Baum",
        "Eingang",
        "Vorratskeller",
        "Zwischenkeller",
        "Kellerbad",
        "Werkstattkeller",
        "Heizungskeller",
        "Schlafzimmer",
        "Badezimmer",
        "Flur",
        "Bibliothek",
        "Gästezimmer",
        "Arbeitszimmer",
        "Dominiks_Zimmer"
    ],
    "quests": [
        "wie",
        "wo",
        "wann",
        "welche",
        "welches",
        "welcher"
    ],
    "times": [
        "heute",
        "morgen",
        "übermorgen",
        "nacht"
    ],
    "devs": [
        "Gong",
        "Wecker",
        "Zirkulation",
        "Golf",
        "Haus_1",
        "Feuchte",
        "Temperatur",
        "Wetter",
        "Licht",
        "Licht_1",
        "Zeit",
        "Haus",
        "*Liste"
    ],
    "verbsi": [
        "schalten",
        "sagen",
        "machen",
        "öffnen",
        "schlieÃ\u009fen",
        "stellen",
        "wecken",
        "sichern",
        "schützen",
        "wachen",
        "korrigieren",
        "fügen",
        "löschen",
        "senden",
        "entfernen"
    ],
    "status": [
        "Status",
        "Wert",
        "Wetter",
        "Zeit"
    ],
    "prepos": [
        "von",
        "vom",
        "des",
        "der",
        "in",
        "im",
        "auf",
        "bei",
        "am"
    ],
    "writes": [
        "Status",
        "Wert",
        "Wetter",
        "Zeit"
    ],
    "re_verbsc": "((schlieÃ\u009f)|(sagen)|(wachen)|(sicher)|(schütze)|(entfernen)|(schalte)|(lösche)|(stelle)|(senden)|(schuetzen)|(stellen)|(überwachen)|(wecken)|(sende)|(entsichere)|(überwache)|(stell)|(schlieÃ\u009fen)|(machs)|(schalten)|(sichern)|(öffne)|(korrigieren)|(löschen)|(korrigiere)|(schalt)|(wecke)|(mache)|(entferne)|(schuetze)|(sichere)|(entsichern)|(sage)|(weck)|(wache)|(schlieÃ\u009fe)|(schützen)|(öffnen)|(fügen)|(füge)|(mach)|(machen))",
    "splaces": [
        "Garderobe",
        "Gästebad",
        "Wohnzimmer",
        "Essgruppe",
        "Sitzgruppe",
        "Fernsehen",
        "Schlummern",
        "AuÃ\u009fen",
        "Hofeingang",
        "Terrasse",
        "Rasen",
        "Garage",
        "Vorgarten",
        "Hecke",
        "Baum",
        "Eingang",
        "Vorratskeller",
        "Zwischenkeller",
        "Kellerbad",
        "Werkstattkeller",
        "Heizungskeller",
        "Schlafzimmer",
        "Badezimmer",
        "Flur",
        "Bibliothek",
        "Gästezimmer",
        "Arbeitszimmer",
        "Dominiks_Zimmer"
    ],
    "re_ids": "((hallo)|(jeannie))",
    "savedate": "Sun Feb 18 11:21:39 2018",
    "re_writes": "((status)|(wert)|(wetter)|(zeit))",
    "re_devs": "((gong)|(wecker)|(zirkulation)|(golf)|(haus_1)|(feuchte)|(temperatur)|(wetter)|(licht)|(licht_1)|(zeit)|(haus)|(*liste))",
    "command": {
        "zeit": {"none": {
            "sagen": {"status": "{speak('$PARM0',ReadingsVal('houseProfileC','tr_housetime',''))}"},
            "schalten": {"status": "{fhem('set YYY time '.(('$VALUE' eq 'morgen') ? 'wakeup' : (('$VALUE' eq 'nacht') ? 'sleep' : 'none')))} "},
            "stellen": {}
        }},
        "haus": {"none": {
            "sichern": {
                "ent": "set YYY state unsecured",
                "zu": "set YYY state secured"
            },
            "sagen": {},
            "wachen": {"über": "set YYY state guarded"},
            "korrigieren": {"status": "set YYY correctstate"},
            "schützen": {"be": "set YYY state protected"}
        }},
        "temperatur": {
            "gästebad": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Gästebad beträgt '.ReadingsVal('tempProfileC','GB.T','').' Grad')}"}},
            "schlafzimmer": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Schlafzimmer beträgt '.ReadingsVal('tempProfileC','SZ.T','').' Grad')}"}},
            "garderobe": {"sagen": {"status": "{speak('$PARM0','Die Temperatur in der Garderobe beträgt '.ReadingsVal('tempProfileC','EB.T','').' Grad')}"}},
            "vorratskeller": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Vorratskeller beträgt '.ReadingsVal('tempProfileC','VK.T','').' Grad')}"}},
            "badezimmer": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Badezimmer beträgt '.ReadingsVal('tempProfileC','BZ.T','').' Grad')}"}},
            "wohnzimmer": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Wohnzimmer beträgt '.ReadingsVal('tempProfileC','WZ.T','').' Grad')}"}},
            "dominiks_zimmer": {"sagen": {"status": "{speak('$PARM0','Die Temperatur in Dominiks Zimmer beträgt '.ReadingsVal('tempProfileC','DZ.T','').' Grad')}"}},
            "werkstattkeller": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Werkstattkeller beträgt '.ReadingsVal('tempProfileC','WK.T','').' Grad')}"}},
            "auÃ\u009fen": {"sagen": {"status": "{speak('$PARM0','Die AuÃ\u009fenemperatur beträgt '.ReadingsVal('climateProfileC','A.T','').' Grad')}"}},
            "kellerbad": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Kellerbad beträgt '.ReadingsVal('tempProfileC','BK.T','').' Grad')}"}},
            "bibliothek": {"sagen": {"status": "{speak('$PARM0','Die Temperatur in der Bibliothek beträgt '.ReadingsVal('tempProfileC','BI.T','').' Grad')}"}},
            "gästezimmer": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Gästezimmer beträgt '.ReadingsVal('tempProfileC','GZ.T','').' Grad')}"}},
            "arbeitszimmer": {"sagen": {"status": "{speak('$PARM0','Die Temperatur im Arbeitszimmer beträgt '.ReadingsVal('tempProfileC','AZ.T','').' Grad')}"}}
        },
        "wecker": {"none": {
            "": {},
            "sagen": {"status": "{speak('$PARM0','Die nächste Weckzeit ist: '.ReadingsVal('timeProfileC','waketime',''))}"},
            "schalten": {
                "aus": "set Alexa.Weckzeit off",
                "ein": "set Alexa.Weckzeit default",
                "an": "set Alexa.Weckzeit default"
            },
            "stellen": {"auf": "set Alexa.Weckzeit $VALUE"}
        }},
        "golf": {"none": {
            "schalten": {},
            "sagen": {
                "status": "{speak('$PARM0',Value('Golf.message'))}",
                "an": "{speak('$PARM0',Value('Golf.message'))}"
            }
        }},
        "zirkulation": {"none": {"schalten": {"an": "set Alexa.Zirkulation on"}}},
        "wetter": {"none": {"sagen": {
            "wetter": "{speak('$PARM0',ReadingsVal('wunderground',(('$VALUE' eq 'heute')?'fc0':(('$VALUE' eq 'morgen')?'fc1':'fc2')).'_message',''))}",
            "none": "{speak('$PARM0',ReadingsVal('wunderground',(('$VALUE' eq 'heute')?'fc0':(('$VALUE' eq 'morgen')?'fc1':'fc2')).'_message',''))}",
            "status": "{speak('$PARM0',ReadingsVal('wunderground',(('$VALUE' eq 'heute')?'fc0':(('$VALUE' eq 'morgen')?'fc1':'fc2')).'_message',''))}"
        }}},
        "haus_1": {"none": {
            "wachen": {},
            "entsichern": {},
            "sagen": {"status": "{speak('$PARM0',ReadingsVal('houseProfileC','message',''))}"},
            "korrigieren": {}
        }},
        "licht_1": {
            "baum": {"schalten": {"an": "set A.Scene scene Baum"}},
            "garage": {"schalten": {"an": "set A.Scene scene Garage "}},
            "terrasse": {"schalten": {"an": "set A.Scene scene Terrasse "}},
            "auÃ\u009fen": {"schalten": {
                "an": "set A.Scene scene Alle_An",
                "aus": "set A.Scene scene Zu_Dunkel"
            }},
            "hofeingang": {"schalten": {"an": "set A.Scene scene Hofeingang"}}
        },
        "*liste": {"none": {
            "sagen": {"status": "attr PostIt postmeTTSDev $PARM0;;get PostIt TTS $STARListe;;attr PostIt postmeTTSDev GalaxyTab.EG "},
            "entfernen": {"ent": "set PostIt remove $STARListe $VALUE"},
            "": {},
            "fügen": {"hinzu": "set PostIt add $STARListe $VALUE"},
            "löschen": {"none": "set PostIt clear $STARListe"}
        }},
        "feuchte": {
            "kellerbad": {"sagen": {"status": "{speak('$PARM0','Die Feuchte im Kellerbad beträgt '.ReadingsVal('humProfileC','BK.rH','').' Prozent')}"}},
            "auÃ\u009fen": {"sagen": {"status": "{speak('$PARM0','Die Feuchte im AuÃ\u009fenbereich beträgt '.ReadingsVal('climateProfileC','A.rH','').' Prozent')}"}},
            "dominiks_zimmer": {"sagen": {"status": "{speak('$PARM0','Die Feuchte in Dominics Zimmer beträgt '.ReadingsVal('humProfileC','DZ.rH','').' Prozent')}"}},
            "werkstattkeller": {"sagen": {"status": "{speak('$PARM0','Die Feuchte im Werkstattkeller beträgt '.ReadingsVal('humProfileC','WK.rH','').' Prozent')}"}},
            "badezimmer": {"sagen": {"status": "{speak('$PARM0','Die Feuchte im Badezimmer beträgt '.ReadingsVal('humProfileC','BZ.rH','').' Prozent')}"}},
            "wohnzimmer": {"sagen": {"status": "{speak('$PARM0','Die Feuchte im Wohnzimmer beträgt '.ReadingsVal('humProfileC','WZ.rH','').' Prozent')}"}},
            "vorratskeller": {"sagen": {"status": "{speak('$PARM0','Die Feuchte im Vorratskeller beträgt '.ReadingsVal('humProfileC','VK.rH','').' Prozent')}"}},
            "schlafzimmer": {"sagen": {"status": "{speak('$PARM0','Die Feuchte im Schlafzimmer beträgt '.ReadingsVal('humProfileC','SZ.rH','').' Prozent')}"}}
        },
        "gong": {"none": {"schalten": {"an": "set Alexa.Dominic_Wecken on"}}},
        "licht": {
            "schlummern": {"schalten": {"an": "set WZ.Scene scene Schlummern"}},
            "essgruppe": {"schalten": {"an": "set WZ.Scene scene Essgruppe"}},
            "sitzgruppe": {"schalten": {"an": "set WZ.Scene scene Lounge"}},
            "wohnzimmer": {"schalten": {
                "an": "set WZ.Scene scene Alle_An",
                "aus": "set WZ.Scene scene Zu_Dunkel"
            }},
            "auÃ\u009fen": {"schalten": {}},
            "fernsehen": {"schalten": {"an": "set WZ.Scene scene Fernsehen"}},
            "terrasse": {"schalten": {}}
        }
    },
    "verbparts": [
        "zu",
        "auf",
        "ent",
        "wider",
        "ein",
        "an",
        "aus",
        "ab",
        "um",
        "ver",
        "be",
        "über",
        "hinzu"
    ],
    "rooms": [],
    "articles": [
        "der",
        "die",
        "das",
        "den",
        "des",
        "dem",
        "zur"
    ],
    "re_prepos": "((von)|(vom)|(des)|(der)|(in)|(im)|(auf)|(bei)|(am))",
    "re_articles": "((der)|(die)|(das)|(den)|(des)|(dem)|(zur))",
    "re_times": "((heute)|(morgen)|(übermorgen)|(nacht))"
}


LG

pah

ekur

Zitat von: Prof. Dr. Peter Henning am 18 Februar 2018, 11:27:35

Immer noch leer ? Was ergibt denn der Eintrag in die Kommandozeile
{FileWrite("babbleFILE","abcdefghijklmnopqrstuvwxyz")}

Der ergibt ein babbleFILE mit dem Eintrag "abcdefghijklmnopqrstuvwxyz". Speichern ist also prinzipiell möglich, es wird die Datei nicht gefüllt. Das kann ich reproduzierbar wiederholen indem ich einen Inhalt in die die Datei babbleFILE schreibe und beim speichern diese Datei mit einer Datei ohne Inhalt überschreibt.

FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC

Prof. Dr. Peter Henning

Hm. Bitte mal im Modul die Prozedur Babble_save ersetzen durch

#########################################################################################
#
# Babble_save
#
# Parameter hash = hash of the babble device
#
#########################################################################################

sub Babble_save($) {
  my ($hash) = @_;
  my $date = localtime(time);
  my $name = $hash->{NAME};
  $hash->{DATA}{"savedate"} = $date;
  readingsSingleUpdate( $hash, "savedate", $hash->{DATA}{"savedate"}, 1 );
  my $json   = JSON->new->utf8;
  my $jhash0 = eval{ $json->encode( $hash->{DATA} ) };
  if( ReadingsVal($name,"lockstate","locked") ne "locked" ){
    my $error  = FileWrite("babbleFILE",$jhash0);
    Log3 $name, 1, "         ".Dumper($jhash0);
    #Log3 $name,1,"[Babble_save] error=$error";
  }else{
    Log3 $name, 1, "[Babble] attempt to save data failed due to lockstate";
    Log3 $name, 5, "         ".Dumper($jhash0);
  }
  return;
}


LG

pah

ekur

Nach Ersetzen und Neustart

Logfile:
2018.02.18 15:53:59.584 1: Including fhem.cfg
2018.02.18 15:54:00.988 1: HMLAN_Parse: HMLAN1 new condition disconnected
2018.02.18 15:54:07.487 1: [Babble] the RiveScript module has been imported successfully, chatbot functionality available
2018.02.18 15:54:07.502 1: [Babble] new RiveScript interpreter generated
2018.02.18 15:54:07.528 1: [Babble_restore] Data hash restored from save file with date Sun Feb 18 15:54:07 2018
2018.02.18 15:54:07.528 1: [Babble_Define] data hash restored from save file with date Sun Feb 18 15:54:07 2018
2018.02.18 15:54:07.529 1: [Babble] new RiveScript interpreter generated
2018.02.18 15:54:07.548 1: PERL WARNING: Subroutine RSOBJ_devices redefined at (eval 901) line 1.
2018.02.18 15:54:07.550 1: PERL WARNING: Subroutine RSOBJ_places redefined at (eval 902) line 1.
2018.02.18 15:54:07.552 1: PERL WARNING: Subroutine RSOBJ_devhelp redefined at (eval 903) line 1.
2018.02.18 15:54:07.576 1: Including ./log/fhem.save
2018.02.18 15:54:13.473 1: usb create starting
2018.02.18 15:54:14.079 1: usb create end
2018.02.18 15:54:14.081 0: Featurelevel: 5.8
2018.02.18 15:54:14.081 0: Server started with 173 defined entities (fhem.pl:16204/2018-02-17 perl:5.024001 os:linux user:fhem pid:11831)
2018.02.18 15:55:13.811 1: [Babble_getdevs] No entry in command table under heizung for local FHEM device BesuchKeller with attribute babbleDevice=Heizung
2018.02.18 15:55:13.814 1: [Babble_getdevs] No entry in command table under heizlüfter for local FHEM device Keller_Zusatzheizung with attribute babbleDevice=Heizlüfter
2018.02.18 15:55:13.815 1: [Babble_getdevs] No entry in command table under test for local FHEM device Testlevel with attribute babbleDevice=test
2018.02.18 15:55:13.830 1: PERL WARNING: Use of uninitialized value $l in print at fhem.pl line 4909.
2018.02.18 15:55:13.832 1:          $VAR1 = undef;

2018.02.18 15:55:14.302 1:          $VAR1 = undef;

2018.02.18 15:55:14.304 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/95_Babble.pm line 2015.
2018.02.18 15:55:14.305 1: PERL WARNING: Use of uninitialized value $cmd in concatenation (.) or string at ./FHEM/95_Babble.pm line 2102.
2018.02.18 15:55:14.442 1:          $VAR1 = undef;

2018.02.18 15:55:14.451 1:          $VAR1 = undef;

2018.02.18 15:56:40.628 1:          $VAR1 = undef;

2018.02.18 15:57:23.874 1:          $VAR1 = undef;

2018.02.18 15:57:57.932 1:          $VAR1 = undef;

2018.02.18 15:57:57.938 1:          $VAR1 = undef;

2018.02.18 15:57:58.113 1:          $VAR1 = undef;

2018.02.18 15:57:58.119 1:          $VAR1 = undef;

2018.02.18 15:58:07.883 1:          $VAR1 = undef;

2018.02.18 15:58:08.343 1:          $VAR1 = undef;

2018.02.18 15:58:08.517 1:          $VAR1 = undef;

2018.02.18 15:58:08.532 1:          $VAR1 = undef;

2018.02.18 15:58:12.562 1:          $VAR1 = undef;


Das
$VAR1 = undef;

schreibt er bei jedem Speichern. Datei ist immer noch ohne Inhalt.

FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC

Prof. Dr. Peter Henning

Offenbar geht irgendetwas schief bei der Erzeugung von JSON aus dem hash. Wenn ich davon ausgehe, dass der Name des Babble-Devices "Babble" ist - was liefert die folgende Eingabe in die Kommandozeile:
{my $json   = JSON->new->utf8;;my $jhash0 = eval{ $json->encode($defs{"Babble"}->{DATA}) };

Was sie liefern sollte ist der komplette Datenhash, also bei mir

$VAR1 = '{"verbsicc":[["schalt","schalte"],["sage","sage","mache"],["mach","machs","mache"],["öffne","schließ"],["schließe","schließ"],["stell","stelle"],["weck","wecke"],["sichere","sicher"],["schütze"],["wache"],["korrigiere"],["füge"],["lösche"],["sende"],["entferne"]],"devsalias":{"temperatur":["6"],"feuchte":["5"],"wetter":["7"],"zeit":["10"],"*liste":["12"],"haus":["4","11"],"licht":["8","9"],"zirkulation":["2"],"wecker":["1"],"gong":["0"],"golf":["3"]},"verbs":{"schließ":"schließen","sagen":"sagen","wachen":"wachen","sicher":"sichern","schütze":"schützen","entfernen":"entfernen","schalte":"schalten","lösche":"löschen","stelle":"stellen","senden":"senden","schuetzen":"schuetzen","stellen":"stellen","überwachen":"überwachen","wecken":"wecken","sende":"senden","entsichere":"entsichern","überwache":"überwachen","stell":"stellen","schließen":"schließen","machs":"machen","schalten":"schalten","sichern":"sichern","öffne":"öffnen","korrigieren":"korrigieren","löschen":"löschen","korrigiere":"korrigieren","schalt":"schalten","wecke":"wecken","mache":"machen","entferne":"entfernen","schuetze":"schuetzen","sichere":"sichern","entsichern":"entsichern","sage":"sagen","weck":"wecken","wache":"wachen","schließe":"schließen","schützen":"schützen","öffnen":"öffnen","fügen":"fügen","füge":"fügen","mach":"machen","machen":"machen"},"re_places":"((garderobe)|(gästebad)|(wohnzimmer)|(essgruppe)|(sitzgruppe)|(fernsehen)|(schlummern)|(außen)|(hofeingang)|(terrasse)|(rasen)|(garage)|(vorgarten)|(hecke)|(baum)|(eingang)|(vorratskeller)|(zwischenkeller)|(kellerbad)|(werkstattkeller)|(heizungskeller)|(schlafzimmer)|(badezimmer)|(flur)|(bibliothek)|(gästezimmer)|(arbeitszimmer)|(dominiks_zimmer))","devcontacts":{"feuchte":["Feuchte","humProfileC",0],"temperatur":["Temperatur","tempProfileC",0],"licht_1":["Licht_1","A.Scene","1"],"zeit":["Zeit","YYY","1"],"haus_1":["Haus_1","houseProfileC",0],"wetter":["Wetter","weather.Today",0],"haus":["Haus","YYY","1"],"*liste":["*Liste","PostIt","2"],"zirkulation":["Zirkulation","Alexa.Zirkulation",0],"licht":["Licht","WZ.Scene","1"],"wecker":["Wecker","Alexa.Weckzeit",0],"gong":["Gong","Alexa.Dominic_Wecken",0],"golf":["Golf","Golf.message",0]},"re_verbparts":"((zu)|(auf)|(ent)|(wider)|(ein)|(an)|(aus)|(ab)|(um)|(ver)|(be)|(über)|(hinzu))","re_status":"((status)|(wert)|(wetter)|(zeit))","re_verbsi":"(?P<verbsi>(schalten)|(sagen)|(machen)|(öffnen)|(schließen)|(stellen)|(wecken)|(sichern)|(schützen)|(wachen)|(korrigieren)|(fügen)|(löschen)|(senden)|(entfernen))","re_quests":"((wie)|(wo)|(wann)|(welche)|(welches)|(welcher))","help":{"zirkulation":"Bitte sprich: Zirkulation anschalten, um die Warmwasserzirkulation für zehn Minuten zu starten","licht":"Bitte sprich: Licht, gefolgt von einer Ortsangabe, gefolgt von an oder aus",".*liste":"Sprich: Listenname, gefolgt von ","gong":"Bitte sprich: Gong anschalten, und Dominic wird geweckt","golf":"Bitte sprich: Golf, und ich sage den Status des Golfplatzes Bruchsal","peters_liste":"Sprich: Zu oder von Peters_Liste, gefolgt von hinzufügen oder entfernen, gefolgt von einer Bezeichnung, oder Peters Liste ansagen oder senden","wecker":"Bitte sprich: Wecken, gefolgt von einer Uhrzeit, oder Wecker ausschalten","feuchte":"Bitte sprich: Wie ist die Feuchte, gefolgt von einer Ortsangabe","temperatur":"Bitte sprich: Wie ist die Temperatur, gefolgt von einer Ortsangabe","haus":"Bitte sprich: Haus, gefolgt von sichern, entsichern, schützen oder überwachen","*liste":"Bitte sprich: Listenname, gefolgt von ansagen, löschen oder hinzufügen, entfernen und einer Bezeichnung","wetter":"Bitte sprich: Wetter, gefolgt von heute, morgen oder übermorgen","haus_1":"Bitte sprich: Haus, gefolgt von einer Ortsangabe, gefolgt von ","licht_1":"Bitte sprich: Licht, gefolgt von einer Ortsangabe, gefolgt von an oder aus","zeit":"Bitte sprich: Guten Morgen oder Gute Nacht oder frage nach dem Status von Zeit"},"places":["Garderobe","Gästebad","Wohnzimmer","Essgruppe","Sitzgruppe","Fernsehen","Schlummern","Außen","Hofeingang","Terrasse","Rasen","Garage","Vorgarten","Hecke","Baum","Eingang","Vorratskeller","Zwischenkeller","Kellerbad","Werkstattkeller","Heizungskeller","Schlafzimmer","Badezimmer","Flur","Bibliothek","Gästezimmer","Arbeitszimmer","Dominiks_Zimmer"],"quests":["wie","wo","wann","welche","welches","welcher"],"times":["heute","morgen","übermorgen","nacht"],"devs":["Gong","Wecker","Zirkulation","Golf","Haus_1","Feuchte","Temperatur","Wetter","Licht","Licht_1","Zeit","Haus","*Liste"],"verbsi":["schalten","sagen","machen","öffnen","schließen","stellen","wecken","sichern","schützen","wachen","korrigieren","fügen","löschen","senden","entfernen"],"status":["Status","Wert","Wetter","Zeit"],"prepos":["von","vom","des","der","in","im","auf","bei","am"],"writes":["Status","Wert","Wetter","Zeit"],"re_verbsc":"((schließ)|(sagen)|(wachen)|(sicher)|(schütze)|(entfernen)|(schalte)|(lösche)|(stelle)|(senden)|(schuetzen)|(stellen)|(überwachen)|(wecken)|(sende)|(entsichere)|(überwache)|(stell)|(schließen)|(machs)|(schalten)|(sichern)|(öffne)|(korrigieren)|(löschen)|(korrigiere)|(schalt)|(wecke)|(mache)|(entferne)|(schuetze)|(sichere)|(entsichern)|(sage)|(weck)|(wache)|(schließe)|(schützen)|(öffnen)|(fügen)|(füge)|(mach)|(machen))","splaces":["Garderobe","Gästebad","Wohnzimmer","Essgruppe","Sitzgruppe","Fernsehen","Schlummern","Außen","Hofeingang","Terrasse","Rasen","Garage","Vorgarten","Hecke","Baum","Eingang","Vorratskeller","Zwischenkeller","Kellerbad","Werkstattkeller","Heizungskeller","Schlafzimmer","Badezimmer","Flur","Bibliothek","Gästezimmer","Arbeitszimmer","Dominiks_Zimmer"],"re_ids":"((hallo)|(jeannie))","savedate":"Sun Feb 18 17:15:28 2018","re_writes":"((status)|(wert)|(wetter)|(zeit))","re_devs":"((gong)|(wecker)|(zirkulation)|(golf)|(haus_1)|(feuchte)|(temperatur)|(wetter)|(licht)|(licht_1)|(zeit)|(haus)|(*liste))","command":{"temperatur":{"wohnzimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Wohnzimmer beträgt \'.ReadingsVal(\'tempProfileC\',\'WZ.T\',\'\').\' Grad\')}"}},"badezimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Badezimmer beträgt \'.ReadingsVal(\'tempProfileC\',\'BZ.T\',\'\').\' Grad\')}"}},"vorratskeller":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Vorratskeller beträgt \'.ReadingsVal(\'tempProfileC\',\'VK.T\',\'\').\' Grad\')}"}},"gästebad":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Gästebad beträgt \'.ReadingsVal(\'tempProfileC\',\'GB.T\',\'\').\' Grad\')}"}},"schlafzimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Schlafzimmer beträgt \'.ReadingsVal(\'tempProfileC\',\'SZ.T\',\'\').\' Grad\')}"}},"garderobe":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur in der Garderobe beträgt \'.ReadingsVal(\'tempProfileC\',\'EB.T\',\'\').\' Grad\')}"}},"arbeitszimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Arbeitszimmer beträgt \'.ReadingsVal(\'tempProfileC\',\'AZ.T\',\'\').\' Grad\')}"}},"bibliothek":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur in der Bibliothek beträgt \'.ReadingsVal(\'tempProfileC\',\'BI.T\',\'\').\' Grad\')}"}},"gästezimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Gästezimmer beträgt \'.ReadingsVal(\'tempProfileC\',\'GZ.T\',\'\').\' Grad\')}"}},"kellerbad":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Kellerbad beträgt \'.ReadingsVal(\'tempProfileC\',\'BK.T\',\'\').\' Grad\')}"}},"außen":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Außenbereich beträgt \'.ReadingsVal(\'climateProfileC\',\'A.T\',\'\').\' Grad\')}"}},"werkstattkeller":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur im Werkstattkeller beträgt \'.ReadingsVal(\'tempProfileC\',\'WK.T\',\'\').\' Grad\')}"}},"dominiks_zimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Temperatur in Dominiks Zimmer beträgt \'.ReadingsVal(\'tempProfileC\',\'DZ.T\',\'\').\' Grad\')}"}}},"haus":{"none":{"korrigieren":{"status":"set YYY correctstate"},"schützen":{"be":"set YYY state protected"},"sichern":{"ent":"set YYY state unsecured","zu":"set YYY state secured"},"sagen":{},"wachen":{"über":"set YYY state guarded"}}},"zeit":{"none":{"schalten":{"status":"{fhem(\'set YYY time \'.((\'$VALUE\' eq \'morgen\') ? \'wakeup\' : ((\'$VALUE\' eq \'nacht\') ? \'sleep\' : \'none\')))} "},"stellen":{},"sagen":{"status":"{speak(\'$PARM0\',ReadingsVal(\'houseProfileC\',\'tr_housetime\',\'\'))}"}}},"zirkulation":{"none":{"schalten":{"an":"set Alexa.Zirkulation on"}}},"golf":{"none":{"schalten":{},"sagen":{"status":"{speak(\'$PARM0\',Value(\'Golf.message\'))}","an":"{speak(\'$PARM0\',Value(\'Golf.message\'))}"}}},"wecker":{"none":{"":{},"sagen":{"status":"{speak(\'$PARM0\',\'Die nächste Weckzeit ist: \'.ReadingsVal(\'timeProfileC\',\'waketime\',\'\'))}"},"schalten":{"aus":"set Alexa.Weckzeit off","ein":"set Alexa.Weckzeit default","an":"set Alexa.Weckzeit default"},"stellen":{"auf":"set Alexa.Weckzeit $VALUE"}}},"feuchte":{"schlafzimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte im Schlafzimmer beträgt \'.ReadingsVal(\'humProfileC\',\'SZ.rH\',\'\').\' Prozent\')}"}},"vorratskeller":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte im Vorratskeller beträgt \'.ReadingsVal(\'humProfileC\',\'VK.rH\',\'\').\' Prozent\')}"}},"wohnzimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte im Wohnzimmer beträgt \'.ReadingsVal(\'humProfileC\',\'WZ.rH\',\'\').\' Prozent\')}"}},"badezimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte im Badezimmer beträgt \'.ReadingsVal(\'humProfileC\',\'BZ.rH\',\'\').\' Prozent\')}"}},"werkstattkeller":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte im Werkstattkeller beträgt \'.ReadingsVal(\'humProfileC\',\'WK.rH\',\'\').\' Prozent\')}"}},"dominiks_zimmer":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte in Dominics Zimmer beträgt \'.ReadingsVal(\'humProfileC\',\'DZ.rH\',\'\').\' Prozent\')}"}},"außen":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte im Außenbereich beträgt \'.ReadingsVal(\'climateProfileC\',\'A.rH\',\'\').\' Prozent\')}"}},"kellerbad":{"sagen":{"status":"{speak(\'$PARM0\',\'Die Feuchte im Kellerbad beträgt \'.ReadingsVal(\'humProfileC\',\'BK.rH\',\'\').\' Prozent\')}"}}},"*liste":{"none":{"sagen":{"status":"attr PostIt postmeTTSDev $PARM0;;get PostIt TTS $STARListe;;attr PostIt postmeTTSDev GalaxyTab.EG "},"entfernen":{"ent":"set PostIt remove $STARListe $VALUE"},"":{},"fügen":{"hinzu":"set PostIt add $STARListe $VALUE"},"löschen":{"none":"set PostIt clear $STARListe"}}},"wetter":{"none":{"sagen":{"wetter":"{speak(\'$PARM0\',ReadingsVal(\'wunderground\',((\'$VALUE\' eq \'heute\')?\'fc0\':((\'$VALUE\' eq \'morgen\')?\'fc1\':\'fc2\')).\'_message\',\'\'))}","none":"{speak(\'$PARM0\',ReadingsVal(\'wunderground\',((\'$VALUE\' eq \'heute\')?\'fc0\':((\'$VALUE\' eq \'morgen\')?\'fc1\':\'fc2\')).\'_message\',\'\'))}","status":"{speak(\'$PARM0\',ReadingsVal(\'wunderground\',((\'$VALUE\' eq \'heute\')?\'fc0\':((\'$VALUE\' eq \'morgen\')?\'fc1\':\'fc2\')).\'_message\',\'\'))}"}}},"haus_1":{"none":{"schützen":{},"korrigieren":{},"wachen":{},"entsichern":{},"sagen":{"status":"{speak(\'$PARM0\',ReadingsVal(\'houseProfileC\',\'message\',\'\'))}"}}},"licht_1":{"terrasse":{"schalten":{"an":"set A.Scene scene Terrasse "}},"außen":{"schalten":{"an":"set A.Scene scene Alle_An","aus":"set A.Scene scene Zu_Dunkel"}},"hofeingang":{"schalten":{"an":"set A.Scene scene Hofeingang"}},"baum":{"schalten":{"an":"set A.Scene scene Baum"}},"garage":{"schalten":{"an":"set A.Scene scene Garage "}}},"dominics_zimmer":{"none":{"sagen":{}}},"licht":{"außen":{"schalten":{}},"fernsehen":{"schalten":{"an":"set WZ.Scene scene Fernsehen"}},"terrasse":{"schalten":{}},"schlummern":{"schalten":{"an":"set WZ.Scene scene Schlummern"}},"essgruppe":{"schalten":{"an":"set WZ.Scene scene Essgruppe"}},"sitzgruppe":{"schalten":{"an":"set WZ.Scene scene Lounge"}},"wohnzimmer":{"schalten":{"an":"set WZ.Scene scene Alle_An","aus":"set WZ.Scene scene Zu_Dunkel"}}},"gong":{"none":{"schalten":{"an":"set Alexa.Dominic_Wecken on"}}},"peters_liste":{"none":{"löschen":{}}}},"verbparts":["zu","auf","ent","wider","ein","an","aus","ab","um","ver","be","über","hinzu"],"rooms":[],"articles":["der","die","das","den","des","dem","zur"],"re_prepos":"((von)|(vom)|(des)|(der)|(in)|(im)|(auf)|(bei)|(am))","re_articles":"((der)|(die)|(das)|(den)|(des)|(dem)|(zur))","re_times":"((heute)|(morgen)|(übermorgen)|(nacht))"}';



LG

pah

ekur

#104
Bei mir ergibt (Babblename ist Babblemarvin)

{my $json   = JSON->new->utf8;;my $jhash0 = eval{ $json->encode($defs{"Babblemarvin"}->{DATA}) };

mit der geänderten 95_Babble.pm

Missing right curly or square bracket at (eval 1266) line 1, at end of line syntax error at (eval 1266) line 1, at EOF

und mit der originalen

Missing right curly or square bracket at (eval 1046) line 1, at end of line syntax error at (eval 1046) line 1, at EOF
FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC