Subversion Repositories HomeAutomation

Rev

Rev 2275 | Rev 2298 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 2275 Rev 2296
Line 360... Line 360...
360
            RubicsonSuccess = "RubicsonNotFound";
360
            RubicsonSuccess = "RubicsonNotFound";
361
           
361
           
362
        } else if (variables["Protocol"] == "Viking")
362
        } else if (variables["Protocol"] == "Viking")
363
        {
363
        {
364
            /*
364
            /*
365
                              ??? aaaaaaaa sttttttttttt hhhhhhhh cccccccc
365
                              ppp aaaaaaaa sttttttttttt hhhhhhhh cccccccc
366
            341731651126    0b100 11111001 000011001011 00101110 00110110   20.3 46%
366
            341731651126    0b100 11111001 000011001011 00101110 00110110   20.3 46%
367
            a = address, s = sign, t = temperature, h = humidity, c = crc
367
            p = protocol type, a = address, s = sign, t = temperature, h = humidity, c = crc
368
            */
368
            */
369
            var data = variables["IRdata"];
369
            var data = variables["IRdata"];
370
            var crc = data&0xFF;
370
            var crc = data&0xFF;
371
            var humidity = (data>>>8)&0xFF;
371
            var humidity = (data>>>8)&0xFF;
372
            var temp = (data>>>16)&0xFFF;
372
            var temp = (data>>>16)&0xFFF;
373
            var addr = rshift(data,28)&0xFF;
373
            var addr = rshift(data,28)&0xFF;
374
            var unknown = rshift(data,36)&0xF;
374
            var type = rshift(data,36)&0xF;
375
            var calccrc=crc8(rshift(data,8), 32);
375
            var calccrc=crc8(rshift(data,8), 32);
376
 
376
 
377
            var sign = (temp>>>11)&1;
377
            var sign = (temp>>>11)&1;
378
            temp = temp&0x7FF;
378
            temp = temp&0x7FF;
379
            if (sign > 0)
379
            if (sign > 0)
Line 382... Line 382...
382
            }
382
            }
383
            temp = temp/10;
383
            temp = temp/10;
384
 
384
 
385
            VikingSuccess = "VikingNotFound";
385
            VikingSuccess = "VikingNotFound";
386
           
386
           
387
            if (unknown != 4)
387
            if (type != 4 && type != 3)
388
            {
388
            {
389
                Log("\033[33mWarning: VikingSensor, unknown part="+unknown+", data="+data+"\033[0m");
389
                Log("\033[33mWarning: VikingSensor, type="+type+", data="+data+"\033[0m");
390
            }
390
            }
391
        } else if (variables["Protocol"] == "VikingSteak")
391
        } else if (variables["Protocol"] == "VikingSteak")
392
        {
392
        {
393
            var data = variables["IRdata"];
393
            var data = variables["IRdata"];
394
            var addr = (data>>>4)&0xFF;
394
            var addr = (data>>>4)&0xFF;
Line 407... Line 407...
407
            {
407
            {
408
                switch (variables["Protocol"])
408
                switch (variables["Protocol"])
409
                {
409
                {
410
                    case "Viking":
410
                    case "Viking":
411
                    {   /* Add alias with these specifics: Channel=0,Proto=Viking,Address=<address of sensor> */
411
                    {   /* Add alias with these specifics: Channel=0,Proto=Viking,Address=<address of sensor> */
-
 
412
                        if (type == 4)
-
 
413
                        {
412
                        if (crc != calccrc)
414
                            if (crc != calccrc)
413
                        {
415
                            {
414
                            Log("\033[31mError: VikingSensor, incorrect CRC, data="+data+", CRC="+crc+", calcCRC="+calccrc+"\033[0m");
416
                                Log("\033[31mError: VikingSensor, incorrect CRC, data="+data+", CRC="+crc+", calcCRC="+calccrc+"\033[0m");
-
 
417
                                break loopAliases;
-
 
418
                            }
-
 
419
                            if (addr == aliases_data[alias_name]["specific"]["Address"])
-
 
420
                            {
-
 
421
                                VikingSuccess = "VikingFound";
-
 
422
 
-
 
423
                                var last_value = {};
-
 
424
                                var last_value_string = Storage_GetParameter("LastValues", alias_name);
-
 
425
 
-
 
426
                                if (last_value_string)
-
 
427
                                {
-
 
428
                                    last_value = eval("(" + last_value_string + ")");
-
 
429
                                }
-
 
430
 
-
 
431
                                var timestamp = get_time();
-
 
432
                                last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
-
 
433
                                if (humidity<101)
-
 
434
                                {
-
 
435
                                    last_value["Humidity_Percent"] = { "value" : humidity.toString(), "timestamp" : timestamp };
-
 
436
                                }
-
 
437
 
-
 
438
                                Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
-
 
439
                               
415
                            break loopAliases;
440
                                break loopAliases;
-
 
441
                            }
416
                        }
442
                        }
-
 
443
                        else if (type == 3)
-
 
444
                        {
-
 
445
                            /* Don't check crc since all bits did not fit in CAN-frame */
417
                        if (addr == aliases_data[alias_name]["specific"]["Address"])
446
                            if (addr == aliases_data[alias_name]["specific"]["Address"])
418
                        {
447
                            {
419
                            VikingSuccess = "VikingFound";
448
                                VikingSuccess = "VikingFound";
420
 
449
 
421
                            var last_value = {};
450
                                var last_value = {};
422
                            var last_value_string = Storage_GetParameter("LastValues", alias_name);
451
                                var last_value_string = Storage_GetParameter("LastValues", alias_name);
423
 
452
 
424
                            if (last_value_string)
453
                                if (last_value_string)
425
                            {
454
                                {
426
                                last_value = eval("(" + last_value_string + ")");
455
                                    last_value = eval("(" + last_value_string + ")");
427
                            }
456
                                }
428
 
457
 
429
                            var timestamp = get_time();
458
                                var timestamp = get_time();
-
 
459
                                temp = temp-40.0;
-
 
460
                                waterlevel = (crc*256 + humidity)*0.3;
430
                            last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
461
                                last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
431
                            if (humidity<101)
-
 
432
                            {
-
 
433
                                last_value["Humidity_Percent"] = { "value" : humidity.toString(), "timestamp" : timestamp };
462
                                last_value["WaterAbsolute_mm"] = { "value" : waterlevel.toString(), "timestamp" : timestamp };
434
                            }
-
 
435
 
463
 
436
                            Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
464
                                Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
437
                           
465
                               
438
                            break loopAliases;
466
                                break loopAliases;
-
 
467
                            }
439
                        }
468
                        }
440
                        break;
469
                        break;
441
                    }
470
                    }
442
                    case "Viking":
471
                    case "Rubicson":
443
                    {   /* Add alias with these specifics: Channel=0,Proto=Viking,Address=<address of sensor> */
472
                    {   /* Add alias with these specifics: Channel=0,Proto=Rubicson,Address=<address of sensor> */
444
                        /*if (crc != calccrc)
473
                        /*if (crc != calccrc)
445
                        {
474
                        {
446
                            Log("\033[31mError: VikingSensor, incorrect CRC, data="+data+", CRC="+crc+", calcCRC="+calccrc+"\033[0m");
475
                            Log("\033[31mError: VikingSensor, incorrect CRC, data="+data+", CRC="+crc+", calcCRC="+calccrc+"\033[0m");
447
                            break loopAliases;
476
                            break loopAliases;
448
                        }*/
477
                        }*/
Line 472... Line 501...
472
                        break;
501
                        break;
473
                    }
502
                    }
474
                    case "VikingSteak":
503
                    case "VikingSteak":
475
                    {   /* Add alias with these specifics: Channel=0,Proto=VikingSteak,Address=<address of sensor> */
504
                    {   /* Add alias with these specifics: Channel=0,Proto=VikingSteak,Address=<address of sensor> */
476
                        /* if no Address is added to the alias, all vikingSteaksensors will match*/
505
                        /* if no Address is added to the alias, all vikingSteaksensors will match*/
477
                        if (aliases_data[alias_name]["specific"]["Address"] == undefined)
506
                        if (aliases_data[alias_name]["specific"]["Address"] == undefined)
478
                        {
-
 
479
                            VikingSteakSuccess = "VikingFound";
-
 
480
                            var last_value = {};
-
 
481
                            var last_value_string = Storage_GetParameter("LastValues", alias_name);
-
 
482
 
-
 
483
                            if (last_value_string)
-
 
484
                            {
-
 
485
                                last_value = eval("(" + last_value_string + ")");
-
 
486
                            }
-
 
487
 
-
 
488
                            var timestamp = get_time();
-
 
489
                            last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
-
 
490
                            last_value["Address"] = { "value" : addr, "timestamp" : timestamp };
-
 
491
                            Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
-
 
492
                            break loopAliases;
-
 
493
                        }
-
 
494
                        else if (addr == aliases_data[alias_name]["specific"]["Address"])
-
 
495
                        {
507
                        {
496
                            VikingSteakSuccess = "VikingFound";
508
                            VikingSteakSuccess = "VikingFound";
497
                            var last_value = {};
509
                            var last_value = {};
498
                            var last_value_string = Storage_GetParameter("LastValues", alias_name);
510
                            var last_value_string = Storage_GetParameter("LastValues", alias_name);
499
 
511
 
500
                            if (last_value_string)
512
                            if (last_value_string)
501
                            {
513
                            {
502
                                last_value = eval("(" + last_value_string + ")");
514
                                last_value = eval("(" + last_value_string + ")");
503
                            }
515
                            }
504
 
516
 
505
                            var timestamp = get_time();
517
                            var timestamp = get_time();
506
                            last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
518
                            last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
507
                            last_value["Address"] = { "value" : addr, "timestamp" : timestamp };
519
                            last_value["Address"] = { "value" : addr, "timestamp" : timestamp };
508
                            Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
520
                            Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
509
                           
-
 
510
                            break loopAliases;
521
                            break loopAliases;
511
                        }
-
 
512
                        break;
-
 
513
                    }
522
                        }
514
                    case "Rubicson":
-
 
515
                    {   /* Add alias with these specifics: Channel=0,Proto=Viking,Address=<address of sensor> */
-
 
516
                        if (crc != calccrc)
-
 
517
                        {
-
 
518
                            Log("\033[31mError: Rubicson, incorrect CRC, data="+data+", CRC="+crc+", calcCRC="+calccrc+"\033[0m");
-
 
519
                            break loopAliases;
-
 
520
                        }
-
 
521
                        if (addr == aliases_data[alias_name]["specific"]["Address"])
523
                        else if (addr == aliases_data[alias_name]["specific"]["Address"])
522
                        {
524
                        {
523
                            VikingSuccess = "VikingFound";
525
                            VikingSteakSuccess = "VikingFound";
524
 
-
 
525
                            var last_value = {};
526
                            var last_value = {};
526
                            var last_value_string = Storage_GetParameter("LastValues", alias_name);
527
                            var last_value_string = Storage_GetParameter("LastValues", alias_name);
527
 
528
 
528
                            if (last_value_string)
529
                            if (last_value_string)
529
                            {
530
                            {
530
                                last_value = eval("(" + last_value_string + ")");
531
                                last_value = eval("(" + last_value_string + ")");
531
                            }
532
                            }
532
 
533
 
533
                            var timestamp = get_time();
534
                            var timestamp = get_time();
534
                            last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
535
                            last_value["Temperature_Celsius"] = { "value" : temp.toString(), "timestamp" : timestamp };
535
                            if (humidity<101)
-
 
536
                            {
-
 
537
                                last_value["Humidity_Percent"] = { "value" : humidity.toString(), "timestamp" : timestamp };
536
                            last_value["Address"] = { "value" : addr, "timestamp" : timestamp };
538
                            }
-
 
539
 
-
 
540
                            Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
537
                            Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
541
                           
538
                           
542
                            break loopAliases;
539
                            break loopAliases;
543
                        }
540
                        }
544
                        break;
541
                        break;
Line 590... Line 587...
590
                }
587
                }
591
            }
588
            }
592
        }
589
        }
593
        if (VikingSuccess == "VikingNotFound")
590
        if (VikingSuccess == "VikingNotFound")
594
        {
591
        {
595
            Log("Found unknown vikingsensor address="+addr+" temperature="+temp+" humidity="+humidity+" unknown="+unknown);
592
            Log("Found unknown vikingsensor address="+addr+" temperature="+temp+" humidity="+humidity+" protocol type="+type);
596
        }
593
        }
597
        if (VikingSteakSuccess == "VikingNotFound")
594
        if (VikingSteakSuccess == "VikingNotFound")
598
        {
595
        {
599
            Log("Found unknown vikingSteaksensor address="+addr+" temperature="+temp);
596
            Log("Found unknown vikingSteaksensor address="+addr+" temperature="+temp);
600
        }
597
        }