NEWS
System.adapter.jeelink.0 && LaCrosse Temperatursensor
-
die io-package.json angepasst werden `
In dieser Datei kann ich ändern was ich will. Das hat kein Einfluss auf den Adapter
Gruß
Jürgen
-
[
In dieser Datei kann ich ändern was ich will. Das hat kein Einfluss auf den Adapter ` habe ich auch grad festgestellt.
bin etwas weiter mit der jeelink.js
adapter.log.info('Temperature0:'+ ((buf.readIntLE(0))*256+(buf.readIntLE(1))-1000)/10); ````bekomme ich erst einmal einen "vernünftigen" Wert ausgerechnet. Hier wird aber noch nicht die Kommastelle berücksichtigt. Mal schauen warum Log:
jeelink.0 2016-05-13 14:19:55 info jeelink.0 Temperature0:20
jeelink.0 2016-05-13 14:19:55 info jeelink.0 splice:4,177,49 -
scheind erstmal was zu machen…
jeelink.js
Code austauschen
if(tmp[2]=='19'){ //we are expecting data in form \"OK nodeid data1 data2 etc var tmpp=tmp.splice(3,8); adapter.log.info('splice:'+tmpp); var buf = new Buffer(tmpp); adapter.log.info('Temperature:'+ (buf.readInt16LE(0))/10); adapter.setState('emonTH_'+ tmp[2] +'.temp', {val: (buf.readInt16LE(0))/10, ack: true}); adapter.log.info('Humidty: ' + (buf.readInt16LE(4))/10); adapter.setState('emonTH_'+ tmp[2] +'.humid', {val: (buf.readInt16LE(4))/10, ack: true}); adapter.log.info('Voltage: ' + (buf.readInt16LE(6))/10); adapter.setState('emonTH_'+ tmp[2] +'.batt', {val: (buf.readInt16LE(6))/10, ack: true}); }
mit
if(tmp[2]=='12' || tmp[2]=='11'){ //we are expecting data in form \"OK nodeid data1 data2 etc var tmpp=tmp.splice(4,6); adapter.log.info('splice_TH' + tmp[2] + ':'+tmpp); var buf = new Buffer(tmpp); adapter.log.info('Temperature_TH'+ tmp[2] +': '+ ((buf.readIntLE(0))*256+(buf.readIntLE(1))-1000)/10); adapter.setState('emonTH_' + tmp[2] +'.temp', {val: ((buf.readIntLE(0))*256+(buf.readIntLE(1))-1000)/10, ack: true}); adapter.log.info('Humidty_TH'+ tmp[2] +': ' + (buf.readIntLE(2))); adapter.setState('emonTH_'+ tmp[2] +'.humid', {val: (buf.readIntLE(2)), ack: true}); } ````ID 11 und 12 sind bei mir 2 Sensoren, müssen entsprechend angepasst werden dann noch die io-package.json anpassen
"11": { "room": [ "Test1" ], "stype": [ "emonTH" ] }, "12": { "room": [ "Test" ], "stype": [ "emonTH" ] },
dann
cd /opt/iobroker
iobroker upload jeelinkund das Ergebnis ist [983_jeelink.jpg](/assets/uploads/files/983_jeelink.jpg)
-
die io-package.json angepasst werden `
In dieser Datei kann ich ändern was ich will. Das hat kein Einfluss auf den Adapter
Gruß
Jürgen `
Habe ähnliche "Probleme" mit dem RPI-Adapter, bei dem ich die Temperaturausgabe an den BPi anpassen möchte.
Die kommt da nur zweistellig.
Wo muss man denn etwas ändern, damit es wirkt?
Gruß
Rainer
-
Wo muss man denn etwas ändern, damit es wirkt? `
nachdem ich "iobroker upload jeelink" gemacht habe, wurde alles übernommen was ich in der io-package.json geändert habe…
ob das die lösung ist weiß ich nicht, hat jedenfalls funktioniert.
-
so, nach einem entspannendem Wochenende klappte es heute etwas besser.
Anpassungen:
<u>Punkt 1 : io-package.json</u>
Dort habe ich eine neue "stype" aufgemacht.
! "sensors": {
! "30": {
! "room": [
! "WC"
! ],
! "stype": [
! "LaCrosse"
! ]
! },
! "27": {
! "room": [
! "Bad"
! ],
! "stype": [
! "LaCrosse"
! ]
! },
Hier muss für jeden vorhandenen Sensor ein Eintrag mit der SensorID erstellt werden.Ob das mir dem "iobroker upload jeelink" grundsätzlich sein muss vermag ich noch nicht zu beurteilen. Es hilft aber
<u>Punkt 2 : jeelink.js</u>
Hier habe ich die Funktion für das anlegen der Sensoren angepasst.
! var obj = adapter.config.sensors;
! for (var anz in obj){
! if(obj[anz].stype=="LaCrosse") {
! adapter.setObject('LaCrosse_' + anz, {
! type: 'channel',
! common: {
! name: 'LaCrosse ' + obj[anz].room,
! role: 'sensor'
! },
! native: {
! "addr": anz
! }
! });
! adapter.log.info('RFM12B setting up object = LaCrosse ' + anz);
! adapter.setObject('LaCrosse_' + anz + '.temp', {
! type: 'state',
! common: {
! "name": "Temperature",
! "type": "number",
! "unit": "°C",
! "min": -50,
! "max": 50,
! "read": true,
! "write": false,
! "role": "value.temperature",
! "desc": "Temperature"
! },
! native: {}
! });
! adapter.setObject('LaCrosse_' + anz + '.humid', {
! type: 'state',
! common: {
! "name": "Humidity",
! "type": "number",
! "unit": "%",
! "min": 0,
! "max": 100,
! "read": true,
! "write": false,
! "role": "value.humidity",
! "desc": "Humidity"
! },
! native: {}
! });
! adapter.setObject('LaCrosse_' + anz + '.batt', {
! type: 'state',
! common: {
! "name": "Battery",
! "type": "number",
! "unit": "V",
! "min": 0,
! "max": 4,
! "read": true,
! "write": false,
! "role": "value.battery",
! "desc": "Battery"
! },
! native: {}
! });
! adapter.setObject('LaCrosse_' + anz + '.type', {
! type: 'state',
! common: {
! "name": "Type",
! "type": "number",
! "unit": "",
! "min": 1,
! "max": 2,
! "read": true,
! "write": false,
! "role": "value.type",
! "desc": "SensorType"
! },
! native: {}
! });
! }Weiterhin habe ich Funktion für die Auswertung der Datensätze angepasst.
Nun muss nicht jeder Sensor hier zusätzlich eingetragen werden
Auch ist es mir gelungen die integer-Werte umzurechnen (Danke für den Denkanstoß @Lenny.CB)
! sp.on('data', function(data) {
! adapter.log.debug('data received: ' + data);
! // OK 9 56 1 4 156 37 ID = 56 T: 18.0 H: 37 no NewBatt
! // OK 9 49 1 4 182 54 ID = 49 T: 20.6 H: 54 no NewBatt
! // OK 9 55 129 4 192 56 ID = 55 T: 21.6 H: 56 WITH NewBatt
! // OK 9 ID XXX XXX XXX XXX
! // | | | | | | |
! // | | | | | | |– [6]Humidity incl. WeakBatteryFlag
! // | | | | | |–---- [5]Temp * 10 + 1000 LSB
! // | | | | |–-------- [4]Temp * 10 + 1000 MSB
! // | | | |–------------ [3]Sensor type (1 or 2) +128 if NewBatteryFlag
! // | | |–--------------- [2]Sensor ID
! // | |–----------------- [1]fix "9"
! // |–-------------------- [0]fix "OK"
! var tmp = data.split(' ');
! if(tmp[0]==='OK'){ // Wenn ein Datensatz sauber gelesen wurde
! if(tmp[1]=='9'){ // Für jeden Datensatz mit dem fixen Eintrag 9
! // somit werden alle SendorIDs bearbeitet
! var tmpp=tmp.splice(3,6); // es werden die vorderen Blöcke (0,1,2) entfernt
! adapter.log.debug('splice : '+ tmpp);
! var buf = new Buffer(tmpp);
! adapter.log.debug('Sensor ID : '+ tmp[2]);
! adapter.log.debug('Type/NewBatt : '+ (buf.readIntLE(0))); // wenn "100000xx" dann NewBatt # xx = SensorType 1 oder 2
! adapter.log.debug('Hi *256 : '+ (buf.readIntLE(1)));
! adapter.log.debug('Low -1000/10 : '+ (buf.readIntLE(2)));
! adapter.log.debug('Temperatur : '+ ((((buf.readIntLE(1))*256)+(buf.readIntLE(2))-1000)/10));
! adapter.log.debug('Humidty : '+ (buf.readIntLE(3))); // Hier muss noch "incl. WeakBatteryFlag" ausgewertet werden
! // Werte schreiben
! // adapter.setState('LaCrosse_'+ tmp[2] +'.batt', {val: (buf.readIntLE(0)), ack: true}); //Baustelle
! adapter.setState('LaCrosse_'+ tmp[2] +'.type', {val: (buf.readIntLE(0)), ack: true}); //Baustelle
! adapter.setState('LaCrosse_'+ tmp[2] +'.temp', {val: ((((buf.readIntLE(1))*256)+(buf.readIntLE(2))-1000)/10), ack: true});
! adapter.setState('LaCrosse_'+ tmp[2] +'.humid',{val: (buf.readIntLE(3)), ack: true});
! }Damit nicht zu vile Einträge ins LOG kommen habe ich die Meldungen auf DEBUG gelegt. Samit sind sie einfach abzuschalten.
Baustellen:
Auswertung von NewBattery und WeakBattery
Wunsch:
Automatisches Anlegen der SensorIDs
Das ganze kann sicher noch optimiert werden. Werde es erst mal so laufen lassen um die Daten zu loggen.
Gruß
Jürgen
-
Verstehe ich das richtig, das man jetzt die Jeelink Sensoren einbinden kann!? Und man die Werte in ioBroker angezeigt bekommt!?
Gesendet von meinem iPhone mit Tapatalk
-
Verstehe ich das richtig, das man jetzt die Jeelink Sensoren einbinden kann!? Und man die Werte in ioBroker angezeigt bekommt!?
Gesendet von meinem iPhone mit Tapatalk `
ja, zwar noch nicht so schön "vollautomatisch" wie bei anderen Adaptern, aber mit Initialen, manuellem Aufwand geht erst einmal schon.
-
Gibt es denn Empfehlungen für die Sensoren!? Oder ist es erstmal egal welche man sich holt!?
Ich möchte günstig jeden Raum mit einem Luftfeuchtigkeit/ Temperatur Sensor ausstatten! Und das wäre im Gegensatz zu Homematic sehr preiswert [emoji16][emoji12][emoji6]
Gesendet von meinem iPhone mit Tapatalk
-
Gibt es denn Empfehlungen für die Sensoren!? Oder ist es erstmal egal welche man sich holt!?
Ich möchte günstig jeden Raum mit einem Luftfeuchtigkeit/ Temperatur Sensor ausstatten! Und das wäre im Gegensatz zu Homematic sehr preiswert [emoji16][emoji12][emoji6]
Gesendet von meinem iPhone mit Tapatalk `
Ja genau das war auch mein Gedanke
Daher habe ich mir ein JeeLink-Clone besorgt und Technoline Außensender TX 29 DTH - IT, weiß
Gruß
Jürgen
-
Wo bekomme ich denn Jeelink clone her!? Amazon/ eBay habe ich nichts gefunden [emoji30]
Gesendet von meinem iPhone mit Tapatalk
-
Wo bekomme ich denn Jeelink clone her!? Amazon/ eBay habe ich nichts gefunden [emoji30] `
Steht im ersten Post. (sogar mit Link) :geek:
-
Ahh stimmt ja, schon länger her das ich den Thread zum ersten Mal gelesen habe [emoji53]
Asche über mein Haupt!!! [emoji6]
Gesendet von meinem iPhone mit Tapatalk
-
Hallo Jürgen,
hast du mal in github deine Änderungen an foxthefox geschickt als pullrequest?
Gruß
Rainer
-
Hallo Jürgen,
hast du mal in github deine Änderungen an foxthefox geschickt als pullrequest?
Gruß
Rainer `
nein,
ich denke seine Idee war eine ganz andere. Wenn wir es nutzen wollen müsten wir den Adapter wohl neu schreiben(JeeLinkLaCrosse)
Gruß
Jürgen
-
nein,
ich denke seine Idee war eine ganz andere. Wenn wir es nutzen wollen müsten wir den Adapter wohl neu schreiben(JeeLinkLaCrosse)
Gruß
Jürgen `
neu schreiben wäre ja auch möglich, aber könnte man das nicht so machen wie beim rpc-Adapter?Ein Instanz für Lacrosse, 1 Instanz für PCA301 u.s.w.? Mal abgesehen davon, dass man für die Sachen jeweils einen JeeLink mit eigener Software braucht.
-
Also habe mir den Jeelink v3c bestellt! Ist der schon geflasht wenn ich den erhalte!? Oder muss ich das selbst übernehmen!?
Weiß das zufällig jemand!?
Wenn ich flashen muss, woher bekomme ich die Firmware!?
Muss ja nicht das Rad neu erfinden, deshalb frage ich hier erst nach [emoji12][emoji6]
Gesendet von meinem iPhone mit Tapatalk
-
Also habe mir den Jeelink v3c bestellt! Ist der schon geflasht wenn ich den erhalte!? Oder muss ich das selbst übernehmen!? `
Wie ich vermute hast du das original bestellt. Damit habe ich keine Erfahrung.
Sollte da dann noch Software eingespielt werden (HowTo aus FHEM suchen) wirst du es sicher hier berichten.
Halte uns bitte auf dem Laufenden.
Gruß
Jürgen
-
Also kurzer Stand!!!
Mein Jeelink v3c habe ich geflasht und nach deiner kurzen Anleitung den Adapter eingerichtet!
Funktioniert einwandfrei!
Die Batterieanzeige geht doch auch ist nur aus kommentiert in der jeelink.js
Bekomme in den Objekten bei der Batterie 1Volt angezeigt
Wenn ich dazu komme erstelle ich eine kurze Anleitung wie man den jeelink ohne FHEM flashed [emoji6]
Gesendet von meinem iPhone mit Tapatalk
-
So hab mir das Teil mal vorgenommen.
Funktioniert eigentlich sehr gut . Hab trotzdem mal ein paar Änderungen eingebaut.
Batterie abfrage funktioniert (battlow = 1)
neue Batterie funktioniert (batnew = 1)
würde jetzt gerne noch an der Automatik für Batteriewechsel (der Sensor bekommt ne neue ID) flashen des Jeelink/Clones und dem anlernen neuer Sensoren basteln. Hab dazu jetzt mal zwei Fragen
1. hat da einer was gegen ? (weis garnicht wer der original Autor ist)
2. wer hat schon eine Dev Umgebung mit Git und WebStorm eingerichtet ? (Anleitung im Wiki ist wohl schon zig Versionen hinterher grins)