Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Verarbeitung von CaCrosse Sensoren TX29DTH

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    924

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Verarbeitung von CaCrosse Sensoren TX29DTH

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 4 Kommentatoren 2.1k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    DerUwe
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      Ü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 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        simpixo
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          DerUwe
          schrieb am zuletzt editiert von
          #4

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

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            DerUwe
            schrieb am zuletzt editiert von
            #5

            @Bluefox:

            Über welche HW kommen die RawDaten rein?

            ] `

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

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              simpixo
              schrieb am zuletzt editiert von
              #6

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

              Gesendet von iPhone mit Tapatalk Pro

              1 Antwort Letzte Antwort
              0
              • D Offline
                D Offline
                DerUwe
                schrieb am zuletzt editiert von
                #7

                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 Antwort Letzte Antwort
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  schrieb am zuletzt editiert von
                  #8

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

                  RFLink, CUL, selbstgebastelt?

                  1 Antwort Letzte Antwort
                  0
                  • D Offline
                    D Offline
                    DerUwe
                    schrieb am zuletzt editiert von
                    #9

                    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 Antwort Letzte Antwort
                    0
                    • D Offline
                      D Offline
                      DerUwe
                      schrieb am zuletzt editiert von
                      #10

                      @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 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        DerUwe
                        schrieb am zuletzt editiert von
                        #11

                        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 Antwort Letzte Antwort
                        0
                        • D Offline
                          D Offline
                          DerUwe
                          schrieb am zuletzt editiert von
                          #12

                          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 Antwort Letzte Antwort
                          0
                          • HomoranH Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von
                            #13

                            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

                            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            1 Antwort Letzte Antwort
                            0
                            • D Offline
                              D Offline
                              DerUwe
                              schrieb am zuletzt editiert von
                              #14

                              @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 Antwort Letzte Antwort
                              0
                              • S Offline
                                S Offline
                                simpixo
                                schrieb am zuletzt editiert von
                                #15

                                @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 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                705

                                Online

                                32.6k

                                Benutzer

                                82.2k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe