Skip to content

Commit 6ee94da

Browse files
committed
Add Home Automation card Analog inputs #46
1 parent ce3f65d commit 6ee94da

File tree

3 files changed

+132
-5
lines changed

3 files changed

+132
-5
lines changed

devices/SequentIO.json

+123-1
Original file line numberDiff line numberDiff line change
@@ -2515,7 +2515,7 @@
25152515
"hasChangeAddress": false,
25162516
"readings": {
25172517
"out0_10": {
2518-
"label": "0-10mA output",
2518+
"label": "0-10v output",
25192519
"interval": {
25202520
"min": 2000,
25212521
"max": 99000,
@@ -2603,7 +2603,129 @@
26032603
"name": "inDigital4.value",
26042604
"desc": "Digital in #4 state",
26052605
"maxSamples": 50
2606+
},
2607+
{
2608+
"name": "inAnalog1",
2609+
"desc": "Analog in #1",
2610+
"maxSamples": 50
2611+
},
2612+
{
2613+
"name": "inAnalog2",
2614+
"desc": "Analog in #2",
2615+
"maxSamples": 50
2616+
},
2617+
{
2618+
"name": "inAnalog3",
2619+
"desc": "Analog in #3",
2620+
"maxSamples": 50
2621+
},
2622+
{
2623+
"name": "inAnalog4",
2624+
"desc": "Analog in #4",
2625+
"maxSamples": 50
2626+
},
2627+
{
2628+
"name": "inAnalog5",
2629+
"desc": "Analog in #5",
2630+
"maxSamples": 50
2631+
},
2632+
{
2633+
"name": "inAnalog6",
2634+
"desc": "Analog in #6",
2635+
"maxSamples": 50
2636+
},
2637+
{
2638+
"name": "inAnalog7",
2639+
"desc": "Analog in #7",
2640+
"maxSamples": 50
2641+
},
2642+
{
2643+
"name": "inAnalog8",
2644+
"desc": "Analog in #8",
2645+
"maxSamples": 50
2646+
},
2647+
{
2648+
"name": "inAnalog1.value",
2649+
"desc": "Analog in #1 voltage",
2650+
"maxSamples": 50
2651+
},
2652+
{
2653+
"name": "inAnalog2.value",
2654+
"desc": "Analog in #2 voltage",
2655+
"maxSamples": 50
2656+
},
2657+
{
2658+
"name": "inAnalog3.value",
2659+
"desc": "Analog in #3 voltage",
2660+
"maxSamples": 50
2661+
},
2662+
{
2663+
"name": "inAnalog4.value",
2664+
"desc": "Analog in #4 voltage",
2665+
"maxSamples": 50
2666+
},
2667+
{
2668+
"name": "inAnalog5.value",
2669+
"desc": "Analog in #5 voltage",
2670+
"maxSamples": 50
2671+
},
2672+
{
2673+
"name": "inAnalog6.value",
2674+
"desc": "Analog in #6 voltage",
2675+
"maxSamples": 50
2676+
},
2677+
{
2678+
"name": "inAnalog7.value",
2679+
"desc": "Analog in #7 voltage",
2680+
"maxSamples": 50
2681+
},
2682+
{
2683+
"name": "inAnalog8.value",
2684+
"desc": "Analog in #8 voltage",
2685+
"maxSamples": 50
2686+
},
2687+
{
2688+
"name": "inAnalog1.raw",
2689+
"desc": "Analog in #1 raw ADC",
2690+
"maxSamples": 50
2691+
},
2692+
{
2693+
"name": "inAnalog2.raw",
2694+
"desc": "Analog in #2 raw ADC",
2695+
"maxSamples": 50
2696+
},
2697+
{
2698+
"name": "inAnalog3.raw",
2699+
"desc": "Analog in #3 raw ADC",
2700+
"maxSamples": 50
2701+
},
2702+
{
2703+
"name": "inAnalog4.raw",
2704+
"desc": "Analog in #4 raw ADC",
2705+
"maxSamples": 50
2706+
},
2707+
{
2708+
"name": "inAnalog5.raw",
2709+
"desc": "Analog in #5 raw ADC",
2710+
"maxSamples": 50
2711+
},
2712+
{
2713+
"name": "inAnalog6.raw",
2714+
"desc": "Analog in #6 raw ADC",
2715+
"maxSamples": 50
2716+
},
2717+
{
2718+
"name": "inAnalog7.raw",
2719+
"desc": "Analog in #7 raw ADC",
2720+
"maxSamples": 50
2721+
},
2722+
{
2723+
"name": "inAnalog8.raw",
2724+
"desc": "Analog in #8 raw ADC",
2725+
"maxSamples": 50
26062726
}
2727+
2728+
26072729
],
26082730
"inputs": [
26092731
{

generic/Temperature.ts

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export class Thermistor10k extends GenericDeviceBase {
1919
case 'number':
2020
if (typeof value.value !== 'undefined') val = value.value;
2121
else if (typeof value.adcValue !== 'undefined') val = value.adcValue;
22+
break;
2223

2324
}
2425
}
@@ -47,6 +48,10 @@ export class Thermistor10k extends GenericDeviceBase {
4748
case 'kohms':
4849
device.values.resistance = (10000 * device.values.adcValue) / (device.values.maxVal - device.values.adcValue);
4950
break;
51+
case 'raw':
52+
device.values.resistance = 10000 * (device.values.adcValue / (device.values.maxVal - device.values.adcValue));
53+
break;
54+
5055
}
5156
switch (device.options.calcType) {
5257
case 'shart':

i2c-bus/SequentIO.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -2406,11 +2406,11 @@ export class SequentHomeAuto extends SequentIO {
24062406
let input = this.inAnalog[i];
24072407
if (this.inAnalog[i].enabled) {
24082408
// Read the registers.
2409-
let volts = await this.readWord(regV.reg) / 1000;
2409+
let volts = (this.i2c.isMock) ? 3.3 * Math.random() : await this.readWord(regV.reg + (i * 2)) / 1000;
24102410
if (volts !== input.value) changed = true;
24112411
if (changed) {
24122412
input.value = volts;
2413-
input.raw = await this.readWord(regR.reg);
2413+
input.raw = (this.i2c.isMock) ? Math.round((1 << 12) * (volts / 3.3)) : await this.readWord(regR.reg + (i * 2));
24142414
webApp.emitToClients('i2cDataValues', { bus: this.i2c.busNumber, address: this.device.address, values: { inputs: { inAnalog: [input] } } });
24152415
}
24162416
}
@@ -2554,13 +2554,13 @@ export class SequentHomeAuto extends SequentIO {
25542554
if (p.startsWith('out0_10')) iarr = this.out0_10;
25552555
else if (p.startsWith('in0_10')) iarr = this.in0_10;
25562556
else if (p.startsWith('outdrain')) iarr = this.outDrain;
2557+
else if (p.startsWith('inanalog')) iarr = this.inAnalog;
25572558
if (typeof iarr === 'undefined') {
25582559
logger.error(`${this.device.name} error getting I/O channel ${prop}`);
25592560
return;
25602561
}
2561-
if (p.includes('0_10.')) { p = p.replace('.', ''); } // If the prop gets sent in as in0_10.x convert back to in0_108 format.
2562+
if (p.includes('0_10.') || p.includes('analog.')) { p = p.replace('.', ''); } // If the prop gets sent in as in0_10.x or inAnalog.x convert back to in0_108 format.
25622563
let parr = p.split('.');
2563-
25642564
let sord = p[parr[0].length - 1];
25652565
let ord = parseInt(sord, 10);
25662566
if (isNaN(ord) || (p.startsWith('in') && (ord <= 0 || ord >= 9)) || (p.startsWith('out') && (ord <= 0 || ord >= 5))) {

0 commit comments

Comments
 (0)