Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Vorlage] Essensplan und Rezept Buch

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] Essensplan und Rezept Buch

    This topic has been deleted. Only users with topic management privileges can see it.
    • Jey Cee
      Jey Cee Developer last edited by Jey Cee

      Hallo zusammen,

      heute möchte ich euch ein Projekt vorstellen das nur wenig mit der Automatisierung zu tun hat.

      Vor längerem habe ich mit meiner Mitbewohnerin angefangen einen Essensplan für die Woche auf zu stellen. Da es mich irgendwann genervt hat, dass ich nicht einfach nachschauen kann wann wir was machen, hab ich mir gedacht es wäre eine gute Idee das auf dem Tablet das eh schon in der Küche hängt verfügbar zu machen.

      Mittlerweile läuft diese Lösung schon seit Mai letzten jahres und wir sind sehr zufrieden damit.

      Aber jetzt mal Konkret was der Essensplan genau ist und was er kann:

      Es gibt eine View für das Tablet. Auf diesem View kann für jeden Tag der Woche ein Gericht mit Zutaten und Rezept eingetragen werden, zusätzlich gibt es die Möglichkeit einen Link für das Rezept an zu geben. Der Link dient 2 Zwecken, einmal dazu das Rezept wieder zu finden und zum anderen gibt es ein Skript dass das Rezept von Chefkoch holt und in das View einfügt.

      Dieses Skript kann auch mit Sicherheit angepasst werden um Rezepte von anderen Seiten zu holen, wir benutzen halt Hauptsächlich Chefkoch.

      Außerdem habe ich noch ein Skript geschrieben das eine JSON Datei anlegt in der Rezepte gespeichert werden. Das war dazu Gedacht Rezepte die uns gefallen zu Speichern und wieder verwenden zu können.

      Ein teil der Logik ist direkt in vis in den basic html widgets hinterlegt. Hier müssen die id's der Widgets angepasst werden.

      Das ganze Projekt ist Modular aufgebaut, das bedeutet das View kommt Theoretisch vollkommen ohne Skript im javascript Adapter aus, dann müssen lediglich die Objekte von Hand angelegt werden.

      Die Wochentage auf den Widgets sind kein Text sondern png's, die ich hier als rar angehängt habe.

      Das Disketten Symbol speichert das Rezept in der JSON Datei. Das Disketten Symbol ist aus dem icons-material-png adapter.

      Das Mülltonnen Symbol löscht das Rezept vom aktuell ausgewählten Tag, mit einem Dialog wird Signlisiert das der Eintrag gelöscht wurde.

      UPDATE: Der Code und die von mir erstellten Bilder liegen jetzt auf https://github.com/Jey-Cee/iobroker-scripts.

      Wenn jemand das für sich nutzen kann freut es mich. Über Feedback würde ich mich ebenfalls freuen.

      282_screenshot.png
      282_screenshot_2.png
      282_screenshot.png

      Widgets, View export war nicht möglich:

      [{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","html":"Essensplan","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"357.5px","top":"60px","width":"285","height":"50","color":"#ffffff","text-align":"center","font-weight":"bolder","font-size":"38px","font-family":"Arial, Helvetica, sans-serif"},"widgetSet":"basic"},{"tpl":"tplMetroTileNav","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"label":"","bg_class":"bg-cobalt","bg_class_active":"","badge_bg_class":"","badge_bg_class_active":"","icon_badge":"","brand_bg_class":"","brand_bg_class_active":"","icon_class":"icon-arrow-left","nav_view":"Kueche","badge_top":"0","badge_left":"0","views":["Kueche","Wohnzimmer","Stromverbrauch"],"gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"60px","padding":"0","width":"284px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"javascript.0.Essensplan.vis_switch","value":"Montag","icon_false":"/vis.0/main/img/Wochentage/Montag.png","icon_true":"/vis.0/main/img/Wochentage/Montag.png","icon_width":"100","icon_left":"20","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"146px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"javascript.0.Essensplan.vis_switch","value":"Dienstag","icon_false":"/vis.0/main/img/Wochentage/Dienstag.png","icon_true":"/vis.0/main/img/Wochentage/Dienstag.png","icon_width":"100","icon_left":"20","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"206.66666666666666px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"javascript.0.Essensplan.vis_switch","value":"Mittwoch","icon_false":"/vis.0/main/img/Wochentage/Mittwoch.png","icon_true":"/vis.0/main/img/Wochentage/Mittwoch.png","icon_width":"100","icon_left":"20","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"267.3333333333333px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"javascript.0.Essensplan.vis_switch","value":"Donnerstag","icon_false":"/vis.0/main/img/Wochentage/Donnerstag.png","icon_true":"/vis.0/main/img/Wochentage/Donnerstag.png","icon_width":"100","icon_left":"20","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"328px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"javascript.0.Essensplan.vis_switch","value":"Freitag","icon_false":"/vis.0/main/img/Wochentage/Freitag.png","icon_true":"/vis.0/main/img/Wochentage/Freitag.png","icon_width":"100","icon_left":"20","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"388.6666666666667px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"javascript.0.Essensplan.vis_switch","value":"Samstag","icon_false":"/vis.0/main/img/Wochentage/Samstag.png","icon_true":"/vis.0/main/img/Wochentage/Samstag.png","icon_width":"100","icon_left":"20","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"449.33333333333337px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"javascript.0.Essensplan.vis_switch","value":"Sonntag","icon_false":"/vis.0/main/img/Wochentage/Sonntag.png","icon_true":"/vis.0/main/img/Wochentage/Sonntag.png","icon_width":"100","icon_left":"20","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"61px","top":"510.00000000000006px","height":"50px"},"widgetSet":"metro"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"Name","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"230px","top":"150px","height":"25px","width":"50px","color":"#ffffff","font-size":"15px","font-weight":"","text-align":"right","line-height":"1.8"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"Link","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"230px","top":"193px","height":"50px","width":"50px","color":"#ffffff","font-size":"15px","font-weight":"","text-align":"right","line-height":"1.8"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"Zutaten","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"241px","top":240,"height":"25px","width":"55px","color":"#ffffff","font-size":"15px","font-weight":"","text-align":"right","line-height":"1.8"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"Zubereitung","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"240px","top":"360px","height":"25px","width":"85px","color":"#ffffff","font-size":"15px","font-weight":"","text-align":"right","line-height":"1.8"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"\n\n
      >! <form name="\&quot;Zubereitung_textarea\&quot;">\n    \n</form>
      >! \n\n","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"225px","top":"386px","color":"","width":"745px","height":"280px","border-width":""},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"\n\n
      >! <form name="\&quot;Zutaten_textarea\&quot;">\n    \n</form>
      >! \n\n","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide","visibility-oid":"{javascript.0.Essensplan.Montag.Link}"},"style":{"left":"225px","top":267,"color":"","width":"740px","height":"85px","border-width":""},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"\n\n
      >! <form name="\&quot;Link_textarea\&quot;">\n    \n</form>
      >! \n\n","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"290px","top":"190px","color":"","width":"521px","height":"42px","border-width":""},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"\n\n
      >! <form name="\&quot;Name_textarea\&quot;">\n    \n</form>
      >! \n\n","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"290px","top":"146px","color":"","width":"521px","height":"42px","border-width":""},"widgetSet":"basic"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-cobalt","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"state_oid":"","value":"","icon_false":"/vis.0/main/img/mulleimer_weiß.png","icon_true":"/vis.0/main/img/mulleimer_weiß.png","icon_width":"90","icon_left":"61","icon_height":"100","icon_top":"53","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"909px","top":"60px","height":"50px","width":"50px","padding":"0px"},"widgetSet":"metro"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html":"\n","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"910px","top":"6px","width":"50px","height":"50px"},"widgetSet":"basic"},{"tpl":"tplMetroTileToggle","data":{"oid":"javascript.0.Essensplan.save_rezept","visibility-cond":"==","visibility-val":1,"hover":false,"transform":false,"bg_class_false":"bg-cobalt","bg_class_true":"bg-grayLight","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"icon_false":"/icons-material-png/content/ic_save_white_48dp.png","icon_true":"/icons-material-png/content/ic_save_white_48dp.png","icon_width":"85","icon_height":"85","icon_top":"64","icon_left":"64","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide"},"style":{"left":"850px","top":"60px","width":"50px","height":"50px","padding":"0px"},"widgetSet":"metro"}]
      

      Skript zum Anlegen der benötigten Objekte:

      //Author: Jey Cee;   e-mail: jey-cee@live.com
      //
      //Script Name: Essensplan
      //Version: 0.1.0 Erstellungsdatum: 13.05.2016
      //Beschreibung: Legt die Obejkt Struktur für den Essensplan an. 
      createStates();
      function createStates(){
         var Tag = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"];
      
         createState("Essensplan.vis_switch");
         createState("Essensplan.save_rezept", false, {type: "boolean"});
         for(var i = 0; i < Tag.length; i++){
             createState("Essensplan." + Tag[i] + ".ID", 0, {Tag: Tag[i]});          //Wird im Zusammenhang mit RezeptBuch benötigt
             createState("Essensplan." + Tag[i] + ".Link", 0, {Tag: Tag[i]});
             createState("Essensplan." + Tag[i] + ".Name", 0, {Tag: Tag[i]});
             createState("Essensplan." + Tag[i] + ".Zubereitung", 0,{Tag: Tag[i]});
             createState("Essensplan." + Tag[i] + ".Zutaten", 0,{Tag: Tag[i]});
         }
      }
      

      Skript zum Rezept Speichern:

      //Author: Jey Cee;   e-mail: jey-cee@live.com
      //
      //Script Name: Rezept Speichern
      //Version: 0.1.0 Erstellungsdatum: 13.05.2016
      //
      //Beschreibung: Speichert das Rezept entsprechend dem Ausgewählten Tag (Objekt: vis-switch enthält den Tag als String) im Essensplan.
      //              Dabei erhält das Rezept eine ID und es wird das Datum an dem es gespeichert wurde hinterlegt.
       var pfadRezeptBuch = '/opt/iobroker/iobroker-data/files/vis.0/main/RezeptBuch.json';    //Pfad zum RezeptBuch
       var fs = require('fs');
      var Tag = getState("javascript.0.Essensplan.vis_switch"/*Essensplan.vis_switch*/).val;
       on({id: "javascript.0.Essensplan.save_Rezept"/*Essensplan.svae_Rezept*/,
          val: true
          }, function(obj){
      
              fs.stat(pfadRezeptBuch, function(err, stats){                   //Prüfen ob datei vorhanden
                  if (err === null){
                      leseRezepte();                                          //Wenn datei vorhanden, Rezept hinzufügen
                  }else{
                      fs.writeFileSync(pfadRezeptBuch, '{\n \t "Rezept":[      \n}');              //Wenn datei nicht vorhanden, Datei erstellen und danach Rezept hinzufügen
                      schreibeRezept();
                  }
              });
      
              setTimeout(function(){
                  setState("javascript.0.Essensplan.svae_Rezept"/*Essensplan.save_Rezept*/, false);   //Setzt den Speichern Auslöser zurück
              }, 500);                                                                                //Der Timeout dient lediglich optischen zwecken und kann entfernt werden
          });
       //Liest die RezeptBuch.json ein und schreibt sie in eine Variable
      function leseRezepte(){
          var Rezepte = fs.readFileSync(pfadRezeptBuch);
          var Name = getState("javascript.0.Essensplan." + Tag + ".Name").val;
          var Link = getState("javascript.0.Essensplan." + Tag + ".Link").val;
          var Zutaten = getState("javascript.0.Essensplan." + Tag + ".Zutaten").val;
          var Zubereitung = getState("javascript.0.Essensplan." + Tag + ".Zubereitung").val;
      
              setTimeout(function(){
              Rezepte = JSON.parse(Rezepte);
      
              //Prüft ob das Rezept schon im RezeptBuch vorhanden ist
              var vorhanden;
      
              for (var z = 0; z <= Rezepte.Rezept.length -1; z++){        
                  var Name_json = Rezepte.Rezept[z].Name;
                  var Link_json = Rezepte.Rezept[z].Link;
                  var Zutaten_json = Rezepte.Rezept[z].Zutaten;
                  var Zubereitung_json = Rezepte.Rezept[z].Zubereitung;
      
                  if (Name === Name_json && Link === Link_json && Zutaten === Zutaten_json && Zubereitung === Zubereitung_json){
                      vorhanden = "true";
                  }else{
                      //schreibeRezept();
                      vorhanden = "false";
                  }
              }
              if(vorhanden === "false"){schreibeRezept(); log("Rezept hinzugefügt");}
              }, 300);
      
      }   
       //Schreibt die Rezepte ans Ende der Datei
      function schreibeRezept(){
      
          //Datei öffnen
          fs.open(pfadRezeptBuch, 'r+', function(err, fd) {
              if (err) {
                  return console.error(err);
              }
               fs.fstat(fd, function(err, stats){
      
                  //Daten Sammeln und in String packen
                  var Name = getState("javascript.0.Essensplan." + Tag + ".Name").val;
                  var Link = getState("javascript.0.Essensplan." + Tag + ".Link").val;
                  var Zutaten = getState("javascript.0.Essensplan." + Tag + ".Zutaten").val;
                  var Zubereitung = getState("javascript.0.Essensplan." + Tag + ".Zubereitung").val;
                  var Datum = new Date();
      
                  var Daten;
      
                  if (stats.size <=25){
                      Daten = '{\n \t\t"ID":"' + erzeugeID() + '",\n \t\t"Name":"' + Name + '", \n \t\t"Link":"' + Link + '", \n \t\t"Zutaten":"' + Zutaten + '", \n \t\t"Zubereitung":"' + Zubereitung + '", \n \t\t"Datum":"' + Datum + '" \n \t} \n] \n}';
                      }else{
                          Daten = ', {\n \t\t"ID":"' + erzeugeID() + '",\n \t\t"Name":"' + Name + '", \n \t\t"Link":"' + Link + '", \n \t\t"Zutaten":"' + Zutaten + '", \n \t\t"Zubereitung":"' + Zubereitung + '", \n \t\t"Datum":"' + Datum + '" \n \t} \n] \n}';
                      }
      
                  //Schreibe Daten
                  fs.write(fd, Daten, stats.size -5, function(err, fd) {   
                      if (err) {
                          return console.error(err);
                          }
                  });
              });
           });
      }
       //Erzeugt eine eindeutige ID für jedes Rezept das gespeichert wird
      function erzeugeID(){
          var heute = new Date();
          heute = heute.toLocaleString();
          heute = heute.replace(/-/g, '');
          heute = heute.replace(/ /g, '');
          var ID = heute.replace(/:/g, '');
          return ID;
      }[/code]`[/spoiler]
       Skript zur abfrage von Chefkoch:
        ~~[spoiler]~~`~~[code]~~//Author: Jey Cee;      e-mail: jey-cee@live.com 
      //
      //Script Name: Chefkoch_Rezept_holen
      //Version: 0.1.0 Erstellungsdatum: 13.05.2016
      //Beschreibung: Liest ein Rezept anhand des Links von der Seite Chefkoch.de und überträgt die Daten als reinen String in zuvor angelegte Objekte.
      //              Wichtig: Die Objekt struktur wird vom script "Essensplan" erstellt.
       var link;
      var Tag;
      var request = require('request');
       function findeZubereitung (body) {   
      
          //Beschreibung der Zubereitung finden und vom HTML code befreien
          var index1 = body.indexOf('');
          var text1 = body.slice(index1);
          var index2 = text1.indexOf('');
          text1 = text1.slice(0, index2);
      
          text1 = text1.replace('``', "");
          text1 = text1.replace(/
      /g, "");
          text1 = text1.replace(/
      /g, "");
          text1 = text1.replace(/\t/g, "");
          text1 = text1.replace(/\n/g, "");
          text1 = text1.replace(/\s\s*/g, " ");
      
          setState("javascript.0.Essensplan." + Tag + ".Zubereitung"/*Essensplan." + Tag + ".Zubereitung*/, text1);
       }
       function findeZutaten (body) {   
      
          //Zutaten liste vom HTML Code befreien
          var index1 = body.indexOf('');
          var text1 = body.slice(index1);
          var index2 = text1.indexOf('
       ');
          text1 = text1.slice(0, index2);
      
          text1 = text1.replace(//g, " ");
          text1 = text1.replace(/\s<\/tr>/g, "; ");
          text1 = text1.replace(/<.*>/g, "");
          text1 = text1.replace(/\t/g, "");
          text1 = text1.replace(/\n/g, "");
          text1 = text1.replace(/\s\s;/g, "");
          text1 = text1.replace(/ ;/g, ";");
          text1 = text1.replace(/ /g, " ");
          text1 = text1.replace(/\ /g, " ");
      
          //Anzahl der Portionen ermitteln
          var text2 = new RegExp(/id="divisor" value="\d"/);
          text2 = text2.exec(body);
          text2 = text2.toString();
          text2 = text2.replace('id="divisor" value="', "");
          var anzahlPortionen = text2.replace('"', "");
      
          setState("javascript.0.Essensplan." + Tag + ".Zutaten"/*Essensplan." + Tag + ".Zutaten*/, anzahlPortionen + ' Portionen: ' + text1);
       }
       function findeRezeptName (body) {   
      
          var text1 = new RegExp('
       # .*
       ');
          text1 = text1.exec(body);
          text1 = text1.toString();
          text1 = text1.replace('
       # ', "");
          text1 = text1.replace('
       ', "");
          text1 = text1.replace(/ä/g, "ae");
          text1 = text1.replace(/ö/g, "oe");
          text1 = text1.replace(/ü/g, "ue");
          text1 = text1.replace(/ä/g, "ae");
          setState("javascript.0.Essensplan." + Tag + ".Name"/*Essensplan." + Tag + ".Name*/, text1);
      }
       function leseWebseite () {
          try {
              request(link, function (error, response, body) {
                  if (!error && response.statusCode == 200) {              // kein Fehler, Inhalt in body
                      findeRezeptName(body);
                      findeZutaten(body);
                      findeZubereitung(body);
                  } else log(error,'error');                               // Error beim Einlesen
              });
          } catch (e) {
              log('Fehler (try) leseWebseite: ' + e, 'error');
          }   
      }
       // bei Skriptstart
      on({id: /javascript\.0\.Essensplan\..*\.Link/
      }, function (obj){
          Tag = obj.native.Tag;
          link = getState(obj.id).val;
          link = link.replace(/.* /g, "");
          var patt = new RegExp(/chefkoch/);
          if (patt.test(link)){
              leseWebseite();
          }
      });
      
      1 Reply Last reply Reply Quote 0
      • G
        gst666 last edited by

        Prima. Es gibt halt auch andere Anwendungen als die reine Automatisierung.

        Übrigens: Im Skript zum Rezept Speichern

        Muss wohl "javascript.0.Essensplan.svae_Rezept" durch "javascript.0.Essensplan.save_Rezept" ersetzt werden. Im Skript um die Objekte zu erzeugen ist das richtig geschrieben.

        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by

          Danke für den Hinweis.

          Gesendet von meinem m8 mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • Jey Cee
            Jey Cee Developer last edited by

            Es gibt ein Update.

            Am Essensplan hat sich nicht viel geändert, dafür gibt es jetzt ein Funktionsfähiges Rezept Buch in dem Rezepte gespeichert und auch wieder in den Essensplan eingefügt werden können. Außerdem ist es möglich Rezepte aus dem Buch zu löschen.

            Neue Rezepte können momentan nur über den Essensplan eingefügt werden und die Suche existiert noch nicht. Derzeit kann man es nur durchblättern.

            Code und alles andere liegt auf https://github.com/Jey-Cee/iobroker-scripts.

            1 Reply Last reply Reply Quote 0
            • S
              Superdad last edited by

              Coole Idee!

              1 Reply Last reply Reply Quote 0
              • D
                DeepCore last edited by

                Hi Jay Cee!

                Coole Idee, muss ich mir unbedingt angucken!

                :ugeek: Wenn man jetzt noch den Kühlschrank mit ioBroker verknüpft, dann kann der Kühlschrank auch selber einen Essensplan erstellen :lol:

                Nerdige Grüße

                Philippe

                1 Reply Last reply Reply Quote 0
                • Dutchman
                  Dutchman Developer Most Active Administrators last edited by

                  @DeepCore:

                  Wenn man jetzt noch den Kühlschrank mit ioBroker verknüpft, dann kann der Kühlschrank auch selber einen Essensplan erstellen :lol: `

                  Kochen soll er!

                  Coole Lösung, manchmal unglaublich auf was für Ideen man kommt und auch noch realisieren kann [emoji3]

                  ~Dutch

                  –-----------------------

                  Send from mobile device

                  1 Reply Last reply Reply Quote 0
                  • P
                    PatrickFro last edited by

                    @Jey-Cee Kannst Du sagen, ob der Essensplan noch funktioniert? Ich habe es mit meinem geringen Verständnis versucht zu nutzen, ohne Erfolg.

                    Jey Cee 1 Reply Last reply Reply Quote 0
                    • Jey Cee
                      Jey Cee Developer @PatrickFro last edited by

                      @PatrickFro spontan fällt mir kein Grund ein warum es nicht gehen sollte. Wo hängt es denn?

                      P 1 Reply Last reply Reply Quote 0
                      • Nashra
                        Nashra Most Active Forum Testing last edited by

                        Moin @Jey-Cee
                        sorry aber ich schnalle im Moment auch einiges nicht z.B. wo was eingetragen wird usw.
                        Die Datenpunkte unter javascript.0 sind angelegt, Widgets in VIS, welches Script kommt jetzt
                        wohin und was muß bei den Widgets noch aktiviert werden (bei den IDs)???

                        1 Reply Last reply Reply Quote 0
                        • P
                          PatrickFro @Jey Cee last edited by Jey Cee

                          @Jey-Cee

                          Ich erhalte z.b. folgende Fehler:

                          ility
                          build
                          HOST IOBROKER-PIioBroker.admin 3.6.2
                          refresh pausedelete delete_foreverLOG HERUNTERLADENLog-Größe: 0.63 MB 
                          	Zeit		
                          Meldung
                          javascript.0	2019-07-02 22:00:40.731	error	at Timer.listOnTimeout (timers.js:290:5)
                          javascript.0	2019-07-02 22:00:40.731	error	at tryOnTimeout (timers.js:323:5)
                          javascript.0	2019-07-02 22:00:40.731	error	at ontimeout (timers.js:511:34)
                          javascript.0	2019-07-02 22:00:40.731	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1869:34)
                          javascript.0	2019-07-02 22:00:40.731	error	at Object.<anonymous> (script.js.Essensplan4:46:24)
                          javascript.0	2019-07-02 22:00:40.730	error	at JSON.parse (<anonymous>:null:null)
                          javascript.0	2019-07-02 22:00:40.730	error	Error in callback: SyntaxError: Unexpected token } in JSON at position 17
                          javascript.0	2019-07-02 22:00:36.062	warn	at process._tickCallback (internal/process/next_tick.js:181:9)
                          javascript.0	2019-07-02 22:00:36.062	warn	at _combinedTickCallback (internal/process/next_tick.js:139:11)
                          javascript.0	2019-07-02 22:00:36.062	warn	at endReadableNT (_stream_readable.js:1064:12)
                          javascript.0	2019-07-02 22:00:36.062	warn	at IncomingMessage.emit (events.js:208:7)
                          javascript.0	2019-07-02 22:00:36.062	warn	at emitNone (events.js:111:20)
                          javascript.0	2019-07-02 22:00:36.062	warn	at Object.onceWrapper (events.js:313:30)
                          javascript.0	2019-07-02 22:00:36.062	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1083:12)
                          javascript.0	2019-07-02 22:00:36.062	warn	at Request.emit (events.js:211:7)
                          javascript.0	2019-07-02 22:00:36.062	warn	at emitOne (events.js:116:13)
                          javascript.0	2019-07-02 22:00:36.062	warn	at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1161:10)
                          javascript.0	2019-07-02 22:00:36.062	warn	at Request.emit (events.js:214:7)
                          javascript.0	2019-07-02 22:00:36.062	warn	at emitTwo (events.js:126:13)
                          javascript.0	2019-07-02 22:00:36.062	warn	at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                          javascript.0	2019-07-02 22:00:36.061	warn	at Request._callback (script.js.Essensplan1:92:17)
                          javascript.0	2019-07-02 22:00:36.061	warn	at findeZubereitung (script.js.Essensplan1:32:5)
                          javascript.0	2019-07-02 22:00:36.061	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20)
                          javascript.0	2019-07-02 22:00:36.061	warn	State "javascript.0.Essensplan.undefined.Zubereitung" not found
                          javascript.0	2019-07-02 22:00:36.061	warn	at process._tickCallback (internal/process/next_tick.js:181:9)
                          javascript.0	2019-07-02 22:00:36.061	warn	at _combinedTickCallback (internal/process/next_tick.js:139:11)
                          javascript.0	2019-07-02 22:00:36.061	warn	at endReadableNT (_stream_readable.js:1064:12)
                          javascript.0	2019-07-02 22:00:36.061	warn	at IncomingMessage.emit (events.js:208:7)
                          javascript.0	2019-07-02 22:00:36.061	warn	at emitNone (events.js:111:20)
                          javascript.0	2019-07-02 22:00:36.061	warn	at Object.onceWrapper (events.js:313:30)
                          javascript.0	2019-07-02 22:00:36.061	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1083:12)
                          javascript.0	2019-07-02 22:00:36.061	warn	at Request.emit (events.js:211:7)
                          javascript.0	2019-07-02 22:00:36.061	warn	at emitOne (events.js:116:13)
                          javascript.0	2019-07-02 22:00:36.061	warn	at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1161:10)
                          javascript.0	2019-07-02 22:00:36.060	warn	at Request.emit (events.js:214:7)
                          javascript.0	2019-07-02 22:00:36.060	warn	at emitTwo (events.js:126:13)
                          javascript.0	2019-07-02 22:00:36.060	warn	at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                          javascript.0	2019-07-02 22:00:36.060	warn	at Request._callback (script.js.Essensplan1:91:17)
                          javascript.0	2019-07-02 22:00:36.060	warn	at findeZutaten (script.js.Essensplan1:62:5)
                          javascript.0	2019-07-02 22:00:36.060	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20)
                          javascript.0	2019-07-02 22:00:36.060	warn	State "javascript.0.Essensplan.undefined.Zutaten" not found
                          javascript.0	2019-07-02 22:00:36.060	warn	at process._tickCallback (internal/process/next_tick.js:181:9)
                          javascript.0	2019-07-02 22:00:36.060	warn	at _combinedTickCallback (internal/process/next_tick.js:139:11)
                          javascript.0	2019-07-02 22:00:36.060	warn	at endReadableNT (_stream_readable.js:1064:12)
                          javascript.0	2019-07-02 22:00:36.060	warn	at IncomingMessage.emit (events.js:208:7)
                          javascript.0	2019-07-02 22:00:36.060	warn	at emitNone (events.js:111:20)
                          javascript.0	2019-07-02 22:00:36.060	warn	at Object.onceWrapper (events.js:313:30)
                          javascript.0	2019-07-02 22:00:36.059	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/request/request.js:1083:12)
                          javascript.0	2019-07-02 22:00:36.059	warn	at Request.emit (events.js:211:7)
                          javascript.0	2019-07-02 22:00:36.059	warn	at emitOne (events.js:116:13)
                          javascript.0	2019-07-02 22:00:36.059	warn	at Request.<anonymous> (/opt/iobroker/node_modules/request/request.js:1161:10)
                          javascript.0	2019-07-02 22:00:36.059	warn	at Request.emit (events.js:214:7)
                          javascript.0	2019-07-02 22:00:36.059	warn	at emitTwo (events.js:126:13)
                          javascript.0	2019-07-02 22:00:36.059	warn	at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
                          javascript.0	2019-07-02 22:00:36.059	warn	at Request._callback (script.js.Essensplan1:90:17)
                          javascript.0	2019-07-02 22:00:36.059	warn	at findeRezeptName (script.js.Essensplan1:82:5)
                          javascript.0	2019-07-02 22:00:36.056	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20)
                          javascript.0	2019-07-02 22:00:36.053	warn	State "javascript.0.Essensplan.undefined.Name" not found
                          

                          Leider verstehe ich auch noch nicht, wo mein Fehler oder Problem liegt. Auf jeden Fall komme ich nicht weiter.

                          Ich habe alle 5 Javascripte ausgeführt, 2 VIS angelegt. Weiter komme ich nicht.

                          MOD Edit Jey Cee: Log in Code Tags gepackt.

                          Jey Cee 1 Reply Last reply Reply Quote 0
                          • Jey Cee
                            Jey Cee Developer @PatrickFro last edited by

                            @PatrickFro @Nashra Wichtig nehmt alles von meinem Github Repo.
                            Die Skripte müssen alle im JavaScript Adapter eingefügt werden.
                            In den Html Widgets gibt es JavaScript code, dort müsst ihr die IDs der Buttons (Tage, Löschen, etc.) anpassen. Die Widgets bekommen beim Import neue IDs deshalb ist das nötig. Die ID seht ihr im Vis Editor links oben.
                            5e61f508-a166-47e5-83dd-906b85d4858b-image.png

                            Den Inhalt aus der CSS.txt muss in Vis rechts unter CSS eingefügt werden.
                            d59a0140-259f-4ee8-8ee6-84556b0cd32e-image.png

                            Ich hoffe das Bringt euch weiter.

                            O 1 Reply Last reply Reply Quote 0
                            • O
                              Oli @Jey Cee last edited by

                              Hallo @Jey-Cee ,

                              Erst einmal danke für deine Arbeit hier, die Idee finde ich total cool.

                              Müssen im Vis bestimmte Widgets installiert sein?

                              bei mir stehen fast alle als undefiniert da.

                              f69f5ee7-dabb-46bc-b8e1-5ae5dc57f0f2-image.png

                              Gruß Oliver

                              Jey Cee 1 Reply Last reply Reply Quote 0
                              • Jey Cee
                                Jey Cee Developer @Oli last edited by

                                @Oliver-Böhm sagte in [Vorlage] Essensplan und Rezept Buch:

                                Müssen im Vis bestimmte Widgets installiert sein?

                                Ich hab meine Visualisierung damals mit Metro Widgets realisiert, aber ich dachte der Essensplan müsste mit Basic Widgets realisiert sein. Installiere doch mal zum Testen die Metro Widgets.

                                O 1 Reply Last reply Reply Quote 0
                                • O
                                  Oli @Jey Cee last edited by

                                  @Jey-Cee

                                  hat geklaapt.

                                  Danke!!!

                                  1 Reply Last reply Reply Quote 0
                                  • Nashra
                                    Nashra Most Active Forum Testing last edited by Nashra

                                    Moin @Jey-Cee, irgendwie ist bei mir der Wurm drin.
                                    Alles soweit eingestellt mit den ID's.
                                    Dann ein Rezept eingetragen und wenn ich auf speichern gehe kommt dies

                                    javascript.0	2019-07-04 08:56:57.303	error	at Timer.processTimers (timers.js:223:10)
                                    javascript.0	2019-07-04 08:56:57.303	error	at listOnTimeout (timers.js:263:5)
                                    javascript.0	2019-07-04 08:56:57.303	error	at tryOnTimeout (timers.js:300:5)
                                    javascript.0	2019-07-04 08:56:57.303	error	at ontimeout (timers.js:438:13)
                                    javascript.0	2019-07-04 08:56:57.303	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1886:34)
                                    javascript.0	2019-07-04 08:56:57.303	error	at Object.<anonymous> (script.js.Essensplan.RezeptBuch.Rezept_speichern:46:24)
                                    javascript.0	2019-07-04 08:56:57.302	error	at JSON.parse (<anonymous>:null:null)
                                    javascript.0	2019-07-04 08:56:57.302	error	Error in callback: SyntaxError: Unexpected token } in JSON at position 17
                                    

                                    Nachtrag, dies kam noch hinterher

                                    javascript.0	2019-07-04 08:56:57.300	error	at Timer.processTimers (timers.js:223:10)
                                    javascript.0	2019-07-04 08:56:57.300	error	at listOnTimeout (timers.js:263:5)
                                    javascript.0	2019-07-04 08:56:57.300	error	at tryOnTimeout (timers.js:300:5)
                                    javascript.0	2019-07-04 08:56:57.300	error	at ontimeout (timers.js:438:13)
                                    javascript.0	2019-07-04 08:56:57.300	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1886:34)
                                    javascript.0	2019-07-04 08:56:57.300	error	at Object.<anonymous> (script.js.Essensplan.RezeptBuch.Rezept_speichern:46:24)
                                    javascript.0	2019-07-04 08:56:57.300	error	at JSON.parse (<anonymous>:null:null)
                                    javascript.0	2019-07-04 08:56:57.298	error	Error in callback: SyntaxError: Unexpected token } in JSON at position 17
                                    javascript.0	2019-07-04 08:55:39.983	warn	at process._tickCallback (internal/process/next_tick.js:63:19)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at endReadableNT (_stream_readable.js:1129:12)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at IncomingMessage.emit (events.js:203:15)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at Object.onceWrapper (events.js:286:20)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1083:12)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at Request.emit (events.js:198:13)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at Request.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1161:10)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at Request.emit (events.js:198:13)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:185:22)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at Request._callback (script.js.Essensplan.getChefkoch:92:17)
                                    javascript.0	2019-07-04 08:55:39.982	warn	at findeZubereitung (script.js.Essensplan.getChefkoch:32:5)
                                    javascript.0	2019-07-04 08:55:39.981	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1275:20)
                                    javascript.0	2019-07-04 08:55:39.979	warn	State "javascript.0.Essensplan.undefined.Zubereitung" not found
                                    javascript.0	2019-07-04 08:55:39.977	warn	at process._tickCallback (internal/process/next_tick.js:63:19)
                                    javascript.0	2019-07-04 08:55:39.977	warn	at endReadableNT (_stream_readable.js:1129:12)
                                    javascript.0	2019-07-04 08:55:39.977	warn	at IncomingMessage.emit (events.js:203:15)
                                    javascript.0	2019-07-04 08:55:39.977	warn	at Object.onceWrapper (events.js:286:20)
                                    javascript.0	2019-07-04 08:55:39.977	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1083:12)
                                    javascript.0	2019-07-04 08:55:39.976	warn	at Request.emit (events.js:198:13)
                                    javascript.0	2019-07-04 08:55:39.976	warn	at Request.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1161:10)
                                    javascript.0	2019-07-04 08:55:39.976	warn	at Request.emit (events.js:198:13)
                                    javascript.0	2019-07-04 08:55:39.976	warn	at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:185:22)
                                    javascript.0	2019-07-04 08:55:39.976	warn	at Request._callback (script.js.Essensplan.getChefkoch:91:17)
                                    javascript.0	2019-07-04 08:55:39.976	warn	at findeZutaten (script.js.Essensplan.getChefkoch:62:5)
                                    javascript.0	2019-07-04 08:55:39.976	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1275:20)
                                    javascript.0	2019-07-04 08:55:39.975	warn	State "javascript.0.Essensplan.undefined.Zutaten" not found
                                    javascript.0	2019-07-04 08:55:39.966	warn	at process._tickCallback (internal/process/next_tick.js:63:19)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at endReadableNT (_stream_readable.js:1129:12)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at IncomingMessage.emit (events.js:203:15)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at Object.onceWrapper (events.js:286:20)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1083:12)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at Request.emit (events.js:198:13)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at Request.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1161:10)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at Request.emit (events.js:198:13)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:185:22)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at Request._callback (script.js.Essensplan.getChefkoch:90:17)
                                    javascript.0	2019-07-04 08:55:39.966	warn	at findeRezeptName (script.js.Essensplan.getChefkoch:82:5)
                                    javascript.0	2019-07-04 08:55:39.965	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1275:20)
                                    javascript.0	2019-07-04 08:55:39.964	warn	State "javascript.0.Essensplan.undefined.Name" not found
                                    
                                    O 1 Reply Last reply Reply Quote 0
                                    • O
                                      Oli @Nashra last edited by Oli

                                      Hallo @Nashra ,

                                      da bist du schon weiter als ich, bei mir macht es gar nix.

                                      Mein erstes Problem ist, dass nicht mal die Diskette auf dem Speichern Button anzeigt wird, muss ich da noch was anpassen?

                                      Wenn ich das ganze richtig verstanden habe, füge ich einen Link von Chefkoch in das Feld Link ein, klicke auf einen Wochentag und danach auf Speichern.
                                      Da passier aber bei mir nichts, muss ich noch etwas im Script "Chefkoch_Rezept_holen" ändern?

                                      Die HTML Widgets wurden alle angepasst.

                                      Gruß Oliver

                                      Nashra 1 Reply Last reply Reply Quote 0
                                      • Nashra
                                        Nashra Most Active Forum Testing @Oli last edited by

                                        @Oliver-Böhm sagte in [Vorlage] Essensplan und Rezept Buch:

                                        Hallo @Nashra ,

                                        da bist du schon weiter als ich, bei mir macht es gar nix.

                                        Mein erstes Problem ist, dass nicht mal die Diskette auf dem Speichern Button anzeigt wird, muss ich da noch was anpassen?

                                        Das Paket icons-material-png muss installiert sein ioBroker.icons-material-png

                                        Weiter bin ich aber auch noch nicht. Alles ist angepasst sowie @Jey-Cee geschrieben hat,
                                        aber sobald ich in VIS was anklicke, hagelt es Fehler im Log.

                                        1 Reply Last reply Reply Quote 0
                                        • Jey Cee
                                          Jey Cee Developer last edited by

                                          State "javascript.0.Essensplan.undefined.Name" not found
                                          

                                          Das sagt mir das kein Tag ausgewählt wurde oder die Übergabe des Tages nicht geklappt hat.

                                          Den Fehler beim Speichern eines Rezept kenne ich, da ist was mit der Datei beim erstellen schief gelaufen. Kann aber auch ein Folge Fehler sein weil der Tag nicht mit gegeben wird.
                                          Die Datei muss gelöscht werden.

                                          opt/iobroker/iobroker-data/files/vis.0/main/RezeptBuch.json
                                          
                                          Nashra 1 Reply Last reply Reply Quote 0
                                          • Nashra
                                            Nashra Most Active Forum Testing @Jey Cee last edited by

                                            @Jey-Cee sagte in [Vorlage] Essensplan und Rezept Buch:

                                            State "javascript.0.Essensplan.undefined.Name" not found
                                            

                                            Das sagt mir das kein Tag ausgewählt wurde oder die Übergabe des Tages nicht geklappt hat.

                                            Den Fehler beim Speichern eines Rezept kenne ich, da ist was mit der Datei beim erstellen schief gelaufen. Kann aber auch ein Folge Fehler sein weil der Tag nicht mit gegeben wird.
                                            Die Datei muss gelöscht werden.

                                            opt/iobroker/iobroker-data/files/vis.0/main/RezeptBuch.json
                                            

                                            Der Tag wird aber im Datenpunkt angelegt. Rezeptbuch.json gelöscht.
                                            Wird beim speichern auch neu angelegt aber jetzt habe ich dies

                                            javascript.0	2019-07-05 11:57:55.560	error	at Timer.processTimers (timers.js:223:10)
                                            javascript.0	2019-07-05 11:57:55.560	error	at listOnTimeout (timers.js:263:5)
                                            javascript.0	2019-07-05 11:57:55.560	error	at tryOnTimeout (timers.js:300:5)
                                            javascript.0	2019-07-05 11:57:55.560	error	at ontimeout (timers.js:438:13)
                                            javascript.0	2019-07-05 11:57:55.560	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1886:34)
                                            javascript.0	2019-07-05 11:57:55.560	error	at Object.<anonymous> (script.js.Essensplan.RezeptBuch.Rezept_speichern:46:24)
                                            javascript.0	2019-07-05 11:57:55.559	error	at JSON.parse (<anonymous>:null:null)
                                            javascript.0	2019-07-05 11:57:55.559	error	Error in callback: SyntaxError: Unexpected token } in JSON at position 17
                                            
                                            Jey Cee 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            826
                                            Online

                                            31.9k
                                            Users

                                            80.3k
                                            Topics

                                            1.3m
                                            Posts

                                            11
                                            26
                                            5226
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo