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 | |
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 |
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 ( |
387 | if (type != 4 && type != 3) |
| 388 | { |
388 | { |
| 389 | Log("\033[33mWarning: VikingSensor, |
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[" |
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 " |
471 | case "Rubicson": |
| 443 | { /* Add alias with these specifics: |
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 |
|
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 |
|
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+" |
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 | } |