#!/usr/bin/python
# -*- encoding: utf-8 -*-

# cteni teploty z cidla MCP9808 a pridani udaje o teplote k fotografii z webkamery pomoci programu "fswebcam"

import smbus
import os

bus = smbus.SMBus(1)    # novejsi verze Raspberry Pi (512MB)
i2cadr = 0x18           # vsechny adresovaci vstupy jsou v '0' takze I2C adresa teplomeru je 0x18

stav = bus.read_i2c_block_data(i2cadr,0x05)    # nacte informace o aktualni teplote (registr 0x05)

horni = stav[0] & 0b00011111      # z horniho bajtu oreze flagy prekroceni meznich hodnot (T_CRIT; T_UPPER; T_LOWER)
dolni = stav[1] 

binteplota = (horni<<8) + dolni       # horni a dolni bajt posklada do jednoho cisla (binarni teplota)


# (Tady si nejsem uplne jisty prevodem zapornych hodnot. Chtelo by to vyzkouset.)
if(binteplota & 0b0001000000000000):  # otestovani znamenka teploty na 12. bitu
  binteplota = -0x10000 + binteplota  # kdyz je znaminko zaporne, provede se prevod na binarni doplnek

celsius = binteplota / 16.0           # nejnizsi 4 bity jsou pro zlomky stupnu celsia, takze se cele cislo vydeli 16

# prikaz pro sejmuti fotky
prikaz = "fswebcam --resolution 640x480 --png 1 --subtitle " + str(celsius) + "°C teplo_fotka.png"
os.system (prikaz)                # vykonani prikazu

