Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Verarbeitung von CaCrosse Sensoren TX29DTH

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Verarbeitung von CaCrosse Sensoren TX29DTH

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      DerUwe last edited by

      Hallo

      Nach langem basteln habe ich nun meine CaLrosse Sensoren im Haus in den IOBroker geschafft und möchte Euch meine Variante der Implementierung nicht vorenthalten.

      Ich würde mich über konstruktive Kritik und Anregungen sowie Idees wie man es besser machen könnte sehr freuen!

      Wie funktioniert es:

      Aufgrund fehlendem Wissen wie man serialport in iobroker.javascript nutzt, habe ich einen Node-Red Sketch erstellt. Dieser holt die Daten von der Seriellen Schnittstelle und speichert den String in javascript.0.Jeelink_RAW_data

      Ein Javascript hat eine subscription auf diesen tag und wird bei Änderung entsprichend getriggert.

      Das die Sensoren bei Batteriewechsel eine neue Addresse nutzen, wollte ich die Addressvergabe flexibel über die VIS managen. Daher nutzt das Script eine Struktur im iobroker für das Mapping.

      btw: Das Script erstellt aufgrund des Arrays

      var defrooms = ["Schlafzimmer","Dachboden","Keller","Terrasse","Garten","Wintergarten"];
      
      

      Alle Variablen im iobroker selbstständig.

      Sketchcode:
      1769_nodered.png

      Für den Import in Nodered:

      ! [ { "id": "287186cc.30fe8a", "type": "serial in", "z": "2e8e9763.fece38", "name": "", "serial": "78ea7747.d23468", "x": 143, "y": 103, "wires": [ [ "1ed58d03.aa454b", "9e43317c.42e5e" ] ] }, { "id": "9e43317c.42e5e", "type": "debug", "z": "2e8e9763.fece38", "name": "Serial In Debug", "active": false, "complete": "payload", "x": 416, "y": 171, "wires": [] }, { "id": "26c364ca.e1767c", "type": "comment", "z": "2e8e9763.fece38", "name": "RFM12 Inbound", "info": "", "x": 134, "y": 55, "wires": [] }, { "id": "1ed58d03.aa454b", "type": "ioBroker out", "z": "2e8e9763.fece38", "name": "Jeelink Raw data", "topic": "javascript.0.Jeelink_RAW_data", "ack": "true", "autoCreate": "true", "x": 420.5, "y": 102, "wires": [] }, { "id": "78ea7747.d23468", "type": "serial-port", "serialport": "/dev/ttyUSB0", "serialbaud": "57600", "databits": 8, "parity": "none", "stopbits": 1, "newline": "\\r\\n" } ] !

      Im Javascript Adapter habe ich dann ein script geschrieben das die Auswertung und speicherung vornimmt:

      Für den Import in Javascript:

      ! ````
      /* System Lacrosse
      Skript wertet Jeelink LaCrossemeldungen aus
      ! A Leelink clone has to be connected to /dev/ttyUSB0
      In node-red a single link between Serial In and Jeelink_RAW_data need to be build
      (TODO: Bring Serialport into this script)
      ! 08.01.2017: Initial Script:
      Script subscribe to "Jeelink_RAW_data" and on event it checks for "OK 9" -> TX29DTH
      Temperature, Humidity and battery state is read, dewpoint is calculated
      ! the script creates all objects in IOBroker itself! For that, you need to
      list rooms in variable defrooms!
      /
      //Variables to define if a new sensor in room is added
      var defrooms = ["Schlafzimmer","Dachboden","Keller","Terrasse","Garten","Wintergarten"];
      ! // Variablen erstellen
      var LookupRooms ={};
      ! //############################### One Time execution on scriptstart#######################################
      createState('Jeelink_RAW_data', {
      read: true,
      write: true,
      type: 'string',
      name: 'Jeelink Raw data'
      });
      ! //create all rooms if not defined
      defrooms.forEach(function(einArrayElement) {
      createState('Rooms.'+einArrayElement+'.Temperatur',0, {read: true,write: true,type: 'number',
      name: einArrayElement+' Temperatur',desc: ''});
      createState('Rooms.'+einArrayElement+'.Feuchte',0, {read: true,write: true,type: 'number',
      name: einArrayElement+' Feuchte',desc: ''});
      createState('Rooms.'+einArrayElement+'.Taupunkt',0, {read: true,write: true,type: 'number',
      name: einArrayElement+' Taupunkt',desc: ''});
      createState('Rooms.'+einArrayElement+'.LC_Batterie',0, {read: true,write: true,type: 'boolean',
      name: einArrayElement+' Taupunkt',desc: ''});
      createState('Config.LaCrosse.Mapping.'+einArrayElement,0, {read: true,write: true,type: 'int',
      name: 'Mapping from LaCrosse sensor to room'+einArrayElement,desc: ''});
      //Add new room to Lookup table
      LookupRooms[getState('Config.LaCrosse.Mapping.'+einArrayElement).val] = einArrayElement;
      });
      log("Defined rooms: "+JSON.stringify(LookupRooms));
      ! //############################### Event execution #######################################
      //Address of LaCrosse was manually changed, read Lookuptable again
      on({id: /^javascript.0.Config.LaCrosse.Mapping.
      $/}, function(obj) {
      LookupRooms = {};
      defrooms.forEach(function(einArrayElement) {
      LookupRooms[getState('Config.LaCrosse.Mapping.'+einArrayElement).val] = einArrayElement;
      });
      log("Lookuptable was reloaded");
      });
      ! //New Value received from Jeelink Adapter
      on("Jeelink_RAW_data", function(obj) {
      var tokens = obj.state.val.split(" ");
      //Is it a La Crosse device?
      if (tokens.shift() == "\nOK")
      {
      //Is it a DHT29 device?
      if (tokens[0] == "9")
      {
      tokens.shift();
      //log(tokens);
      Parse_LaCrosseDHT(tokens);
      }
      else
      {
      //ToDO: Something more intelligent as only a log message
      log('Unbekanntes LaCrosse Device: '+obj.state.val);
      }
      }
      else
      {
      //TODO: Identify other devices
      log('Unbekanntes Device auf 868MHz: '+obj.state.val);
      }
      });
      ! //############################### Helper functions #######################################
      function Parse_LaCrosseDHT (Jeelinkstring) {
      //we are expecting data in form "OK nodeid data1 data2 etc"
      //# OK 9 ID XXX XXX XXX XXX
      //# | | | | | | |
      //# [4]| | | | | | --- Humidity incl. WeakBatteryFlag
      //# [3]| | | | | |------ Temp * 10 + 1000 LSB
      //# [2]| | | | |---------- Temp * 10 + 1000 MSB
      //# [1]| | | |-------------- Sensor type (1 or 2) +128 if NewBatteryFlag
      //# [0]| | |----------------- Sensor ID
      //# | |------------------- fix "9"
      //# |---------------------- fix "OK"
      var b0,b1,b2,b3,b4;
      var Addr =0,batt_new=0,type=0,channel=0,temperature=0,batt_low=0,humidity=0,dewpoint=0,Room='';
      var idTopic ='';

      b0=parseInt(Jeelinkstring.shift());//ID
      b1=parseInt(Jeelinkstring.shift());//Type
      b2=parseInt(Jeelinkstring.shift());//Temp1
      b3=parseInt(Jeelinkstring.shift());//Temp2
      b4=parseInt(Jeelinkstring.shift());//Humidity
      

      ! //new battery flag
      batt_new = (b1 & 0x80) >> 7;
      //sensor type
      type = (b1 & 0x70) >> 4;
      //channel (evry time 1)
      channel = b1 & 0x0F;
      ! //Calculate temperature
      temperature = b2 * 256;
      temperature = temperature + b3;
      temperature = temperature - 1000;
      temperature = (temperature/10).toFixed(1);

      //get Battery status
      battery_low = (b4 & 0x80) >> 7;
      

      ! //get humidity
      humidity = (b4 & 0x7f).toFixed(0);
      ! //calculate dewpoint))
      if(temperature !==null && humidity !==null )
      {
      var temp = -1.0temperature;
      es = 6.112
      Math.exp(-1.017.67temp/(243.5 - temp));
      ed = humidity/100.0es;
      eln = Math.log(ed/6.112);
      td = -243.5
      eln/(eln - 17.67 );
      dewpoint = td.toFixed(2);
      }

      //random address from sensor
      Addr = (b0*4).toString(16);
      //log("Adr: "+Addr);
      if (LookupRooms[Addr] === undefined)
      {
        log('Undefined LaCrosse Dev: '+ Addr+ ' Temp:'+temperature+' Hum:'+humidity); 
        return;
      }
      else
      {
          Room = LookupRooms[Addr]; 
          //Store data in iobroker
          setState('Rooms.'+Room+'.Temperatur',parseFloat(temperature));
          setState('Rooms.'+Room+'.Feuchte',parseFloat(humidity));
          setState('Rooms.'+Room+'.LC_Batterie',battery_low =="1");
          setState('Rooms.'+Room+'.Taupunkt',parseFloat(dewpoint));
      }		
      

      ! }
      ! ````

      Und zu guter letzt noch die widgets für eine Testseite, so wie sie dieses Script oben zur Zeit nutzt:

      Zum Import in die VIS:

      ! [{"tpl":"tplFrame","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","title":"LaCrosse TX29DTH Config","title_color":"black","title_top":"1","title_left":"14","header_height":"30","header_color":"#57d4ff","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},"style":{"left":"6px","top":"6px","width":"786px","height":"464px","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"25px"},"widgetSet":"basic"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Config.LaCrosse.Mapping.Dachboden","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"Dachboden","digits":"0","size":"10","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},"style":{"left":"60px","top":"351px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-weight":"700","font-size":"18px","letter-spacing":"0","word-spacing":"0px","width":"290px","height":"53px","font-variant":"normal"},"widgetSet":"jqui"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Config.LaCrosse.Mapping.Garten","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"Garten","digits":"0","size":"10","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},"style":{"left":"99px","top":"94px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-weight":"700","font-size":"18px","letter-spacing":"0","word-spacing":"0px","width":"247px","height":"48px","font-variant":"normal"},"widgetSet":"jqui"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Config.LaCrosse.Mapping.Wintergarten","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"Wintergarten","digits":"0","size":"10","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},"style":{"left":"46px","top":"158px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-weight":"700","font-size":"18px","letter-spacing":"0","word-spacing":"0px","width":"301px","height":"53px","font-variant":"normal"},"widgetSet":"jqui"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Config.LaCrosse.Mapping.Terrasse","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"Terrasse","digits":"0","size":"10","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},"style":{"left":"83px","top":"222px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-weight":"700","font-size":"18px","letter-spacing":"0","word-spacing":"0px","width":"267px","height":"53px","font-variant":"normal"},"widgetSet":"jqui"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Config.LaCrosse.Mapping.Schlafzimmer","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"Schlafzimmer","digits":"0","size":"10","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},"style":{"left":"39px","top":"286px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-weight":"700","font-size":"18px","letter-spacing":"0","word-spacing":"0px","width":"308px","height":"53px","font-variant":"normal"},"widgetSet":"jqui"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Config.LaCrosse.Mapping.Keller","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"Keller","digits":"0","size":"10","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},"style":{"left":"107px","top":"416px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-weight":"700","font-size":"18px","letter-spacing":"0","word-spacing":"0px","width":"240px","height":"53px","font-variant":"normal"},"widgetSet":"jqui"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.Rooms.Garten.Temperatur","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","is_comma":"true","is_tdp":"false","factor":"1","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,"html_append_singular":"","html_append_plural":" °C"},"style":{"left":"363px","top":"104px","color":"rgb(132, 182, 231)","text-align":"right","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"134px","height":"27px"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.Rooms.Wintergarten.Temperatur","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","is_comma":"true","is_tdp":"false","factor":"1","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,"html_append_singular":"","html_append_plural":" °C"},"style":{"left":"363px","top":"171px","color":"rgb(132, 182, 231)","text-align":"right","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"134px","height":"27px"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.Rooms.Terrasse.Temperatur","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","is_comma":"true","is_tdp":"false","factor":"1","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,"html_append_singular":"","html_append_plural":" °C"},"style":{"left":"363px","top":"235px","color":"rgb(132, 182, 231)","text-align":"right","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"134px","height":"27px"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.Rooms.Schlafzimmer.Temperatur","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","is_comma":"true","is_tdp":"false","factor":"1","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,"html_append_singular":"","html_append_plural":" °C"},"style":{"left":"363px","top":"299px","color":"rgb(132, 182, 231)","text-align":"right","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"134px","height":"27px"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.Rooms.Dachboden.Temperatur","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","is_comma":"true","is_tdp":"false","factor":"1","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,"html_append_singular":"","html_append_plural":" °C"},"style":{"left":"363px","top":"364px","color":"rgb(132, 182, 231)","text-align":"right","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"134px","height":"27px"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.Rooms.Keller.Temperatur","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","is_comma":"true","is_tdp":"false","factor":"1","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,"html_append_singular":"","html_append_plural":" °C"},"style":{"left":"363px","top":"429px","color":"rgb(132, 182, 231)","text-align":"right","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"134px","height":"27px"},"widgetSet":"basic"},{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Rooms.Dachboden.LC_Batterie","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/icons-open-icon-library-png/status/battery-100-2.png","icon_on":"/icons-open-icon-library-png/status/battery-caution.png","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,"readOnly":true},"style":{"left":"614px","top":"350.59999999999997px"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"nothing_selected","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","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,"html_prepend":"Temperatur"},"style":{"left":"419px","top":"50px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"129px","height":"29px"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"nothing_selected","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","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,"html_prepend":"Addresse"},"style":{"left":"174px","top":"51px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"129px","height":"29px"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"nothing_selected","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","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,"html_prepend":"Batterie Status"},"style":{"left":"566px","top":"51px","color":"rgb(132, 182, 231)","text-align":"start","text-shadow":"none","font-family":"Arial,Helvetica,sans-serif","font-style":"normal","font-variant":"normal","font-weight":"700","font-size":"18px","line-height":"22px","letter-spacing":"0px","word-spacing":"0px","width":"138px","height":"29px"},"widgetSet":"basic"},{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Rooms.Keller.LC_Batterie","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/icons-open-icon-library-png/status/battery-100-2.png","icon_on":"/icons-open-icon-library-png/status/battery-caution.png","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,"readOnly":true},"style":{"left":"614px","top":"414.99999999999994px"},"widgetSet":"basic"},{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Rooms.Schlafzimmer.LC_Batterie","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/icons-open-icon-library-png/status/battery-100-2.png","icon_on":"/icons-open-icon-library-png/status/battery-caution.png","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,"readOnly":true},"style":{"left":"614px","top":"286.2px"},"widgetSet":"basic"},{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Rooms.Terrasse.LC_Batterie","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/icons-open-icon-library-png/status/battery-100-2.png","icon_on":"/icons-open-icon-library-png/status/battery-caution.png","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,"readOnly":true},"style":{"left":"614px","top":"221.8px"},"widgetSet":"basic"},{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Rooms.Wintergarten.LC_Batterie","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/icons-open-icon-library-png/status/battery-100-2.png","icon_on":"/icons-open-icon-library-png/status/battery-caution.png","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,"readOnly":true},"style":{"left":"614px","top":"157.4px"},"widgetSet":"basic"},{"tpl":"tplBulbOnOffCtrl","data":{"oid":"javascript.0.Rooms.Garten.LC_Batterie","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","icon_off":"/icons-open-icon-library-png/status/battery-100-2.png","icon_on":"/icons-open-icon-library-png/status/battery-caution.png","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,"readOnly":true},"style":{"left":"614px","top":"93px"},"widgetSet":"basic"}] !

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        Über welche HW kommen die RawDaten rein?

        Serial port im Javasciprt => einfach in der Konfiguration von JS-adapter, unter npm module "serialport" eintragen.

        Und dann

        var SerialPort = require("serialport");
        var port = new SerialPort("/dev/ttyUSB0", {
          baudRate: 57600
        });
        port.on('data', function (data) {
          // hier sind die Befehle
          console.log('Data: ' + data.toString());
        });
        port.on('open', function() {
          console.log('Connected');
        });
        port.on('error', function(err) {
          console.log('Error: ', err.message);
        })
        // close port if the script stopped (to be able to open it again)
        onStop(function (callback) {
            if (port && port.isOpen()) {
        	port.close();
           }
           callback();
        });
        
        
        1 Reply Last reply Reply Quote 0
        • S
          simpixo last edited by

          Es gibt doch einen LaCrosse Adapter….[emoji848]

          Was kann deine Lösung besser!?

          Würde mich sehr interessieren, da ich selbst inzwischen 9 TX 29 DTH-IT Sensoren mit dem Adapter verarbeite

          Gruß

          Adrian

          Gesendet von iPhone mit Tapatalk Pro

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

            Läuft der mit einem Jeelink oder über die CCU?

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

              @Bluefox:

              Über welche HW kommen die RawDaten rein?

              ] `

              hmmm,…. so einfach soll das gehen?....

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

                Ich habe diesen mit dem Jeelink am laufen…. aber wird leider im Moment nicht weiter entwickelt [emoji53]

                Gesendet von iPhone mit Tapatalk Pro

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

                  Cool!

                  Serialport in javascript läuft. Wieder ein Punkt von meiner Liste checked.

                  bald kann ich Nodered abschalten :-: Wieder 30MB mehr RAM auf dem raspi…

                  @simpixo: Kannst du kurz erklären wie du den jeelink ans laufen bekommen hast?

                  Dann gucke ich mir den auch mal an.

                  1 Reply Last reply Reply Quote 0
                  • Bluefox
                    Bluefox last edited by

                    > Über welche HW kommen die RawDaten rein?
                    ??

                    RFLink, CUL, selbstgebastelt?

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

                      Das ist ein Selbstbastel jeelink Clone.

                      Ein Arduino Nano aus China für ein paar Eur + ein RF12B

                      und die aktuelle LaCrosseITPlusReader Version

                      #define PROGNAME         "LaCrosseITPlusReader"
                      #define PROGVERS         "10.1q" 
                      
                      

                      Das Ganze in einen Schrumpfschlauch verpackt

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

                        @simpixo:

                        Wenn das der Adapter vom KleinenDrachen ist, der speichert die Sensordaten unter seiner ID ab, richtig?

                        Also sowas wie Lacrosse_65_xxxx

                        Das wollte ich ja nicht!

                        Wenn ich die Batterien wechsel, will ich nicht immer das Projekt umbauen. Deshalb kann ich jetzt über die VIS den Räumen die neue Addresse mitteilen.

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

                          Hier mal die version 2 vom Script, die den Nodered Aufsatz überflüssig macht!

                          Dank an den blauen Fuchs 🙂

                          iobroker bringt mich noch dazu, das ich javascript auch noch gut finde…

                          ! ````
                          /* System Lacrosse
                          Skript wertet Jeelink LaCrossemeldungen aus
                          ! A Leelink clone has to be connected to /dev/ttyUSB0
                          In node-red a single link between Serial In and Jeelink_RAW_data need to be build
                          (TODO: Bring Serialport into this script)
                          ! 08.01.2017: Initial Script:
                          Script subscribe to "Jeelink_RAW_data" and on event it checks for "OK 9" -> TX29DTH
                          Temperature, Humidity and battery state is read, dewpoint is calculated
                          ! the script creates all objects in IOBroker itself! For that, you need to
                          list rooms in variable defrooms!
                          /
                          //Variables to define if a new sensor in room is added
                          var defrooms = ["Schlafzimmer","Dachboden","Keller","Terrasse","Garten","Wintergarten"];
                          ! // Variablen erstellen
                          var LookupRooms ={};
                          var SerialPort = require("serialport");
                          var port = new SerialPort("/dev/ttyUSB0", {
                          baudRate: 57600
                          });
                          ! //############################### One Time execution on scriptstart#######################################
                          createState('Jeelink_RAW_data', {
                          read: true,
                          write: true,
                          type: 'string',
                          name: 'Jeelink Raw data'
                          });
                          ! //create all rooms if not defined
                          defrooms.forEach(function(einArrayElement) {
                          createState('Rooms.'+einArrayElement+'.Temperatur',0, {read: true,write: true,type: 'number',
                          name: einArrayElement+' Temperatur',desc: ''});
                          createState('Rooms.'+einArrayElement+'.Feuchte',0, {read: true,write: true,type: 'number',
                          name: einArrayElement+' Feuchte',desc: ''});
                          createState('Rooms.'+einArrayElement+'.Taupunkt',0, {read: true,write: true,type: 'number',
                          name: einArrayElement+' Taupunkt',desc: ''});
                          createState('Rooms.'+einArrayElement+'.LC_Batterie',0, {read: true,write: true,type: 'boolean',
                          name: einArrayElement+' Taupunkt',desc: ''});
                          createState('Config.LaCrosse.Mapping.'+einArrayElement,0, {read: true,write: true,type: 'int',
                          name: 'Mapping from LaCrosse sensor to room'+einArrayElement,desc: ''});
                          //Add new room to Lookup table
                          LookupRooms[getState('Config.LaCrosse.Mapping.'+einArrayElement).val] = einArrayElement;
                          });
                          log("Defined rooms: "+JSON.stringify(LookupRooms));
                          ! port.on('open', function() {
                          console.log('Connected');
                          });
                          ! port.on('error', function(err) {
                          console.log('Error: ', err.message);
                          });
                          ! // close port if the script stopped (to be able to open it again)
                          onStop(function (callback) {
                          if (port && port.isOpen()) {
                          console.log('Port closed');
                          port.close();
                          }
                          callback();
                          });
                          ! //############################### Event execution #######################################
                          //Address of LaCrosse was manually changed, read Lookuptable again
                          on({id: /^javascript.0.Config.LaCrosse.Mapping.
                          $/}, function(obj) {
                          LookupRooms = {};
                          defrooms.forEach(function(einArrayElement) {
                          LookupRooms[getState('Config.LaCrosse.Mapping.'+einArrayElement).val] = einArrayElement;
                          });
                          log("Lookuptable was reloaded");
                          });
                          ! //New Value received from Jeelink Adapter //on("Jeelink_RAW_data",
                          port.on('data', function(obj) {
                          setState('Jeelink_RAW_data',obj.toString());
                          //log(obj.toString());
                          tokens = obj.toString();
                          //obj.state.val.split(" ");
                          var tokens = tokens.split(" ");
                          //Is it a La Crosse device?
                          if (tokens.shift() == "OK")
                          {
                          //Is it a DHT29 device?
                          if (tokens[0] == "9")
                          {
                          tokens.shift();
                          //log(tokens);
                          Parse_LaCrosseDHT(tokens);
                          }
                          else
                          {
                          //ToDO: Something more intelligent as only a log message
                          log('Unbekanntes LaCrosse Device: '+obj.toString());
                          }
                          }
                          else
                          {
                          //TODO: Identify other devices
                          log('Unbekanntes Device auf 868MHz: '+obj.toString());
                          }
                          });
                          ! //############################### Helper functions #######################################
                          function Parse_LaCrosseDHT (Jeelinkstring) {
                          //we are expecting data in form "OK nodeid data1 data2 etc"
                          //# OK 9 ID XXX XXX XXX XXX
                          //# | | | | | | |
                          //# [4]| | | | | | --- Humidity incl. WeakBatteryFlag
                          //# [3]| | | | | |------ Temp * 10 + 1000 LSB
                          //# [2]| | | | |---------- Temp * 10 + 1000 MSB
                          //# [1]| | | |-------------- Sensor type (1 or 2) +128 if NewBatteryFlag
                          //# [0]| | |----------------- Sensor ID
                          //# | |------------------- fix "9"
                          //# |---------------------- fix "OK"
                          var b0,b1,b2,b3,b4;
                          var Addr =0,batt_new=0,type=0,channel=0,temperature=0,batt_low=0,humidity=0,dewpoint=0,Room='';
                          var idTopic ='';

                          b0=parseInt(Jeelinkstring.shift());//ID
                          b1=parseInt(Jeelinkstring.shift());//Type
                          b2=parseInt(Jeelinkstring.shift());//Temp1
                          b3=parseInt(Jeelinkstring.shift());//Temp2
                          b4=parseInt(Jeelinkstring.shift());//Humidity
                          

                          ! //new battery flag
                          batt_new = (b1 & 0x80) >> 7;
                          //sensor type
                          type = (b1 & 0x70) >> 4;
                          //channel (evry time 1)
                          channel = b1 & 0x0F;
                          ! //Calculate temperature
                          temperature = b2 * 256;
                          temperature = temperature + b3;
                          temperature = temperature - 1000;
                          temperature = (temperature/10).toFixed(1);

                          //get Battery status
                          battery_low = (b4 & 0x80) >> 7;
                          

                          ! //get humidity
                          humidity = (b4 & 0x7f).toFixed(0);
                          ! //calculate dewpoint))
                          if(temperature !==null && humidity !==null )
                          {
                          var temp = -1.0temperature;
                          es = 6.112
                          Math.exp(-1.017.67temp/(243.5 - temp));
                          ed = humidity/100.0es;
                          eln = Math.log(ed/6.112);
                          td = -243.5
                          eln/(eln - 17.67 );
                          dewpoint = td.toFixed(2);
                          }

                          //random address from sensor
                          Addr = (b0*4).toString(16);
                          //log("Adr: "+Addr);
                          if (LookupRooms[Addr] === undefined)
                          {
                            log('Undefined LaCrosse Dev: '+ Addr+ ' Temp:'+temperature+' Hum:'+humidity); 
                            return;
                          }
                          else
                          {
                              Room = LookupRooms[Addr]; 
                              //Store data in iobroker
                              setState('Rooms.'+Room+'.Temperatur',parseFloat(temperature));
                              setState('Rooms.'+Room+'.Feuchte',parseFloat(humidity));
                              setState('Rooms.'+Room+'.LC_Batterie',battery_low =="1");
                              setState('Rooms.'+Room+'.Taupunkt',parseFloat(dewpoint));
                          }		
                          

                          ! }
                          ! ````

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

                            Bzgl CUL:

                            Den habe ich auch noch am alten FHEM Aufsatz laufen, weil ich den CUL Adapter nicht ans laufen gebracht habe.

                            @Bluefox: Hast du eine Idee ob der adapter laufen müsste oder ist der veraltet / unbrauchbar?

                            Der CUL läuft unter /dev/ttyAMA0 auf 9600. Wenn ich den CUL-Adapter konfiguriere sagt er immer er will eine Zahl und nicht 9600… ?? :?

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators last edited by

                              Auch wenn ich nur ein Frosch und kein Fuchs bin:
                              @DerUwe:

                              Hast du eine Idee ob der adapter laufen müsste oder ist der veraltet / unbrauchbar?

                              Der CUL läuft unter /dev/ttyAMA0 auf 9600. Wenn ich den CUL-Adapter konfiguriere sagt er immer er will eine Zahl und nicht 9600… ?? `

                              Der aktuelle Adapter läuft nicht - es wird gerade ein neuer entwickelt siehe diesen Thread

                              http://forum.iobroker.net/viewtopic.php?f=35&t=4391

                              Gruß

                              rainer

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

                                @Homoran:

                                Auch wenn ich nur ein Frosch und kein Fuchs bin:

                                Der aktuelle Adapter läuft nicht - es wird gerade ein neuer entwickelt siehe diesen Thread

                                http://forum.iobroker.net/viewtopic.php?f=35&t=4391

                                rainer `

                                Jo, welche Firmware kommt auf den Nano drauf?

                                Richtig cool wäre wenn der Adapter den CC1101 auf ook stellen und die FS20 Geräte steuern könnte!

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

                                  @DerUwe:

                                  @simpixo:

                                  Wenn das der Adapter vom KleinenDrachen ist, der speichert die Sensordaten unter seiner ID ab, richtig?

                                  Also sowas wie Lacrosse_65_xxxx

                                  Das wollte ich ja nicht!

                                  Wenn ich die Batterien wechsel, will ich nicht immer das Projekt umbauen. Deshalb kann ich jetzt über die VIS den Räumen die neue Addresse mitteilen. `

                                  Ja Beim Batteriewechsel muss ich auch die ID in meinen Script ändern, aber nur an einer Stelle!

                                  Da historisiere ich auch die ganzen Daten! Das LaCrosse Objekt interessiert mich in der Hinsicht ja nicht! Also ist es fast genauso wie bei dir! Ich weise sozusagen die ID einem Raum zu [emoji1360]

                                  Gruß

                                  Adrian

                                  Gesendet von iPhone mit Tapatalk Pro

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  956
                                  Online

                                  31.7k
                                  Users

                                  79.8k
                                  Topics

                                  1.3m
                                  Posts

                                  4
                                  15
                                  1745
                                  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